如何显示生成的文件以在QtCreator中构建空间

时间:2018-01-19 13:09:59

标签: c++ cmake qt-creator

我使用CMakeLists.txt,如下所示

cmake_minimum_required(VERSION 3.5)
project(generate_files_from_tool)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

add_custom_command(
    OUTPUT generated_config.cpp
    COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/writeSourceFileFromConfigXml.sh ${CMAKE_CURRENT_SOURCE_DIR}/config.xml > ${CMAKE_CURRENT_BINARY_DIR}/generated_config.cpp
    DEPENDS config.xml writeSourceFileFromConfigXml.sh
    )

add_executable(tool_with_generated_file main.cpp generated_config.cpp)

使用自定义脚本(generated-config.cpp)在构建过程中生成文件(此处为writeSourceFileFromConfigXml.sh)。 我可以使用QtCreator 4.4.1打开它就好了:编译并运行工作 - 但我在 Projects 视图中看不到文件generated_config.cpp,只有CMakeLists.txt和{{ 1}}在那里可见。 如果我“手动”打开文件,QtCreator会显示警告“此文件不属于任何项目”。 - 但它使用文件进行编译。打开文件后,我可以使用 Ctrl + Klick F2 (来自/来自main.cpp)<在定义和实现之间切换/ p>

所以我的问题是:如何让QtCreator理解,这个生成的文件是项目的一部分并将其添加到 Projects 视图中?

注意:将最后一行更改为generated_config.cpp并未改变任何内容。

1 个答案:

答案 0 :(得分:0)

我正在使用一种变通方法来显示生成目录之外的生成源: 我在PROJECT_SOURCE_DIR中创建了指向已生成源的目录的符号链接,例如src1,src2(不使用真实路径很重要)。然后我用:

file(GLOB SOURCE_FILES ${PROJECT_SOURCE_DIR}/src1/*.[ch] ${PROJECT_SOURCE_DIR}/src2/*.[ch])
add_custom_target(
    all_src
    SOURCES ${SOURCE_FILES}
)