我遇到了先有鸡还是先有蛋的情况。我正在使用 vcpkg,这需要我从命令行设置 cmake 工具链文件。但我还有一些cmake_policy语句需要在工具链文件之前在 CMakeLists.txt 中设置。
以下是 cmake 的调用方式:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-linux ..
Run Code Online (Sandbox Code Playgroud)
但该项目使用了一些包,需要立即执行以下两个策略CMAKE_MINIMUM_REQUIRED:
CMAKE_POLICY ( SET CMP0003 NEW ) # libs linked via full path
CMAKE_POLICY ( SET CMP0011 NEW ) # push/pop instead of no_policy_scope
Run Code Online (Sandbox Code Playgroud)
我的问题: 有没有办法从内部指定工具链CMakeLists.txt——大概是在设置两个 cmake 策略之后立即指定——而不是在命令行?
我收到的我想解决的警告是:
CMake Warning (dev) at vcpkg/scripts/buildsystems/vcpkg.cmake:221 (_add_executable):
Policy CMP0003 should be set before this line. Add code such as
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
Run Code Online (Sandbox Code Playgroud)
小智 7
您还应该能够从命令行设置策略:
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POLICY_DEFAULT_CMP0003=NEW \
-DCMAKE_POLICY_DEFAULT_CMP0011=NEW \
-DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux \
..
Run Code Online (Sandbox Code Playgroud)
请参阅如何在使用ExternalProject_Add添加的外部项目上设置CMake策略和属性
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |