我正在尝试为基于 ARM 的笔记本电脑编译 Paraview 图形可视化软件;但是,我收到了一些似乎与 cmake 'policies' 相关的配置警告。警告文本和 cmake 手册页表明我应该能够运行该命令cmake_policy()
来设置特定策略;但是,我不知道如何或在哪里运行它。
如何设置特定的 cmake 策略?
我正在尝试为基于 ARM 的笔记本电脑编译 Paraview 图形可视化软件;但是,我收到了一些似乎与 cmake 'policies' 相关的配置警告。警告文本和 cmake 手册页表明我应该能够运行该命令cmake_policy()
来设置特定策略;但是,我不知道如何或在哪里运行它。
如何设置特定的 cmake 策略?
CMake 命令
cmake_policy()
记录在CMake 文档中。它通常被添加到
CMakeLists.txt
项目的文件中以更改 CMake 本身的行为,通常是为了能够CMakeLists.txt
使用较新版本的 CMake 处理较旧的功能。您可以使用它来设置个人策略
where
<NNNN>
是 CMake 策略编号, whereOLD
表示您想要此策略的“旧行为”(该词OLD
也可以是NEW
)。或者,您可以使用该命令设置与特定版本的 CMake 兼容的策略
x.xx
必须至少在哪里2.4
。在任何一种情况下,
CMakeLists.txt
项目的文件都会被修改,并且cmake
必须重新运行。另请参阅
cmake_minimum_required()
.我使用 Cmake 3.22.0 版,@kusalananda 的回答并没有为我解决这个问题。我在顶部添加了以下行,
CMakeLists.txt
问题已解决:当然
NNNN
应该换成命令行中给出的数字。最后的 CMake 策略警告明确告知用户他们不应该关心这些消息。这些消息是为项目开发人员准备的。
但是,有时作为软件用户,您有充分的理由在安装项目时设置策略。一个原因可能是启用链接时优化(也称为过程间优化)。如果不设置策略,CMake 将忽略
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON
.在这种情况下,您可以使用
-DCMAKE_POLICY_DEFAULT_CMP<NNNN>
来获得您需要的行为,而无需编辑 CMakeLists.txt。当然,联系开发者,建议他们在源代码中处理策略,是一种很好的做法。