如何在QtCreator中使用CMAKE列出自定义文件?

wdebmtf2  于 2023-01-17  发布在  其他
关注(0)|答案(2)|浏览(149)

使用CMAKE管理QtCreator下的项目时,一些有用的文件在项目浏览器中没有显示(例如xml文件、.ui文件等)。

是否可以使用CMAKE显式添加自定义文件以在项目中列出?

#*************************************************************************
# Indicate a related file for the project, only for convenient showing in
# project, does not mean dependency, inclusion, but just related.
function ("IndicateExternalFile" NAME )
    # TODO: No idea how to make this.

endfunction()

尝试至今:

file( GLOB "test.xml") #Not showing.
euoag5mw

euoag5mw1#

可以添加自定义目标并将附加绑定到此目标。
示例:

add_custom_target(useful_files ALL 
    SOURCES
      MyUsefulFile.txt
      Read.me
      Version.txt
)

我在每个子文件夹中都使用这个。qtcreator在项目列表中显示添加的文件。
顺便说一句:我避免使用file( GLOB ...)。请参阅CMake文档了解原因。

aoyhnmkz

aoyhnmkz2#

  • 把我的评论变成答案 *

我已经尝试过qt-creator,您可以将“自定义文件”作为源文件添加到库中,或者将可执行的CMake目标添加到IDE项目中:

但我必须承认,这对不存在的/可选的文件不起作用。
因此,您可以将if (EXISTS ...)检查添加到函数中,如下例所示:

cmake_minimum_required(VERSION 2.8)

project(CMakeTest)
add_executable(${PROJECT_NAME} "main.cpp")

function(IndicateExternalFile _target)
    foreach(_file IN ITEMS ${ARGN})
        if ((IS_ABSOLUTE "${_file}" AND EXISTS "${_file}") OR
            (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${_file}"))
            target_sources(${_target} PRIVATE "${_file}")
        endif()
    endforeach()
endfunction()

file(WRITE "text.xml" "")
IndicateExternalFile(${PROJECT_NAME} "text.xml" "test2.xml")
  • 注意 *:要使用target_sources()添加“源”,您需要一个现有的目标。

相关问题