如何确保 cmake 代码将在子目录之后运行

Posted

技术标签:

【中文标题】如何确保 cmake 代码将在子目录之后运行【英文标题】:how to make sure that cmake codes will run after subdirs 【发布时间】:2015-06-17 13:00:10 【问题描述】:

举个小例子来说明我的问题:

project(Test)

set(TestLibName mytest)
subdirs(src) # will generate mytest.dll dynamic library

set_property(TARGET $TestLibName PROPERTY FOLDER "test")

在这个小脚本中,我想用src 文件夹中的CMakeLists.txt 文件生成动态库,然后我将在顶部的CMakeLists.txt 中设置库的属性。但是,它似乎不起作用,因为我有以下错误:

set_property cannot find Target "mytest". Perhaps it has been created yet. 

解决此问题的一个解决方案是将 set_property 放在创建动态库 (src/CMakeLists.txt) 的 CMakeLists.txt 中。如果我坚持把它放在*** CMakeLists.txt 文件中,我该怎么办?谢谢。

【问题讨论】:

【参考方案1】:

不要使用已弃用的命令subdirs。替换为add_subdirectory时一切正常

【讨论】:

以上是关于如何确保 cmake 代码将在子目录之后运行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CMake 在 C++ 代码中运行 gtest? (未见测试)

make如何指定cmake路径

当目标位于子目录中时替代 CMake POST_BUILD 命令

CMake 多配置生成器使用错误的构建目录

如何使用#include保持目录结构在cmake中?

如何在cmake中添加链接器目录? [重复]