我有一个包含多个子目录的CMake项目,比如这个:
dir1
subdir11
subdir12
dir2
subdir21
subdir22
Root 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
吗?
答案 0 :(得分:4)
没有。这个问题最好直接from the documentation ...
回答策略设置使用堆栈确定范围。堆栈的新级别是 进入项目的新子目录时推送(带 add_subdirectory)并在离开时弹出。因此设置一个 项目的一个目录中的策略不会影响父项或兄弟项 目录但会影响子目录。
要对特定级别进行临时更改(不包括sub_directories),可以使用
cmake_policy(PUSH)
cmake_policy(POP)
如果您希望在subdir21和subdir22中应用该策略,您需要明确地将其添加到那里,或者考虑将其添加到公共父级。
答案 1 :(得分:3)
针对此答案的评论SigningMethodECDSA.Sign docs
可以通过set(CMAKE_POLICY_DEFAULT_CMP0046 OLD)