cmake获取源列表

Mat*_*usz 7 c++ dependencies cmake

我有一个已经在cmake下建立的大项目.我正在寻找一种方法来获取源文件列表及其相关的头文件来创建一个新目标(在Emacs的示例etags中).我试图自己找到答案,但似乎并不那么容易.

理想的灵魂将是这样的:

add_executable(my_project <some list of source files and libraries defined in different directories>)
add_custom_target(tags
  COMMAND etags <list of all *.cpp and *.h files used in 'my_project' target>
  DEPENDS <list of all *.cpp and *h used in 'my_project' target>
  COMMENT "Creates source code tags for Emacs")
Run Code Online (Sandbox Code Playgroud)

您是否知道如何使'tags'目标从'my_project'目标导入所有依赖项而无需重写所有目录中的所有cmake配置文件?

jul*_*ulp 6

使用命令get_target_property和属性SOURCES并最终使用PUBLIC_HEADER或PRIVATE_HEADER?

get_target_property(MY_PROJECT_SOURCES my_project SOURCES)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。它似乎适用于简单的情况。但是,如果您有包含 `add_library(SOME_LIB)` 的子目录,然后我的可执行文件与 `target_link_libraries(my_project SOME_LIB)` 链接,则不会显示这些依赖项。此外,我无法使 PUBLIC_/PRIVATE_ HEADER 工作。是否有可能在编译 *.cpp 时获得依赖项(即头文件)并在变量中获得它们? (3认同)