我使用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
并未改变任何内容。
答案 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}
)