首页 > 解决方案 > CMake all_object_files 目标

问题描述

我想创建一个 CMake 目标来构建所有目标文件。为此,我首先修改了所有目标以构建一个目标文件库并链接它:

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并且只有在目标使用它们时才会构建文件(并且我的自定义目标可能不计入使用生成的文件)。

我做错了什么,如何创建一个目标来构建所有目标文件?

标签: cmake

解决方案


推荐阅读