我有一个包含多个子目录的 CMake 项目,如下所示:
dir1
subdir11
subdir12
dir2
subdir21
subdir22
根 CMakeLists.txt:
add_subdirectory(dir1)
add_subdirectory(dir2)
dir1 和 dir2 中的 CMakeLists 类似:
add_subdirectory(subdir11)
add_subdirectory(subdir12)
和
add_subdirectory(subdir21)
add_subdirectory(subdir22)
子目录中的 CMakeLists 做实际工作。
文件
dir1/subdir12/CMakeLists.txt
将 CMP0046
策略设置为 OLD
:cmake_policy(SET CMP0046 OLD) #silently ignore missing dependencies
我的问题是 - CMP0046 的这个设置会传播到
subdir21
和 subdir22
吗? 最佳答案
不。这个问题最好直接回答 from the documentation ...
要对特定级别进行临时更改,不包括 sub_directories,您可以使用
cmake_policy(PUSH)
cmake_policy(POP)
如果您希望在 subdir21 和 subdir22 中应用策略,则需要在那里显式添加它或考虑将其添加到公共(public)父级。
关于cmake - CMake 政策的范围是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29123444/