我想创建一个CMake目标来构建所有目标文件。 为此,我首先修改了所有目标以构建目标文件lib并对其进行链接:
add_library(exe_object_files OBJECT ${sources})
add_executable(exe $<TARGET_OBJECTS:exe_object_files>)
由于我具有多个可执行文件,因此我为所有目标文件添加了一个目标,并为每个可执行文件添加了目标作为依赖项:
add_custom_target(all_exe_object_files)
add_dependencies(all_exe_object_files exe_object_files)
这会添加一个我可以创建的all_exe_object_files
目标,但使目标无效。
然后我尝试将目标文件添加为源:
get_target_property(all_exe_object_files_sources all_exe_object_files SOURCES)
if(NOT all_exe_object_files_sources)
set(all_exe_object_files_sources)
endif()
list(APPEND all_exe_object_files_sources $<TARGET_OBJECTS:exe_object_files>)
set_target_properties(all_exe_object_files PROPERTIES SOURCES "${all_exe_object_files_sources}")
这没有帮助。
我想原因是add_library(... OBJECT ...)
的行为与add_custom_command
类似,并且只有在目标使用文件时才会构建文件(而我的自定义目标可能不算作使用生成的文件)。 / p>
我在做什么错了,如何创建用于构建所有目标文件的目标?