【问题标题】:CMAKE with both a toolchain file and cmake_policy带有工具链文件和 cmake_policy 的 CMAKE
【发布时间】:2020-06-03 22:08:27
【问题描述】:

我的情况是先有鸡还是先有蛋。我正在使用 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 ..

但是项目使用了一些包,在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

我的问题:有没有办法从 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)

【问题讨论】:

    标签: cmake vcpkg


    【解决方案1】:

    您也应该能够从命令行设置策略:

    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 \
          ..
    

    How do I set CMake policy and property on an external project added using ExternalProject_Add

    【讨论】:

      猜你喜欢
      • 2019-01-28
      • 2017-06-17
      • 1970-01-01
      • 2021-10-31
      • 2014-08-14
      • 2022-06-22
      • 2013-11-20
      • 2015-11-23
      • 1970-01-01
      相关资源
      最近更新 更多