我尝试构建项目“abc”。要构建它,我还需要“xyz_made.cpp”,这是从另一个项目“xyz”(自动)生成的源文件。
如果“xyz”是从“CMakeLists.txt”构建的,那么使用“add_dependency”就不会有问题,但我无法使用此“CMakeLists.txt”解决对“xyz_made.cpp”的依赖关系”:
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} source)
project(abc)
# "xyz_made.cpp" is a generated file built by
# another project, "xyz".
add_library(${PROJECT_NAME}
STATIC
${source}
${xyz_BIN_DIR}/xyz_made.cpp
)
add_dependencies(${PROJECT_NAME} xyz)
target_link_libraries(${PROJECT_NAME}
PRIVATE
xyz
)
# include xyz_SOURCE_DIR directory to include xyz_made.cpp
target_include_directories(${PROJECT_NAME}
PRIVATE
${xyz_SOURCE_DIR}
)
# Installation
install(TARGETS ${PROJECT_NAME} DESTINATION ${DST_LIB_DIR})
有任何 CMake 爱好者或专家可以提供帮助吗?
我看到了类似的问题,但就我而言,我不需要下载 CMakeLists.txt 中的任何内容。
使用
add_custom_command
创建自定义命令,将 ${xyz_BIN_DIR}/a_certain_source_file.cpp
标记为 OUTPUT
并使其依赖于 xyz
目标。这将告诉 CMake ${xyz_BIN_DIR}/a_certain_source_file.cpp
是一个生成的文件,以及它应该如何生成它。