新的CMake版本导致奇怪的命令行和警告



我已经用CMake在Ubuntu-18.04-LTS和20.04-LTS下构建了一个(供应商提供的)包大约一年了,但似乎在最近的升级(CMake版本3.23.1)之后发生了一些变化,这给了许多奇怪的异常。我想知道是否有以下任何看起来熟悉,如果有一个简单的解决方案?

CMake Warning:
Ignoring extra path from command line:
"Export compile commands"

我知道这是因为生成了一个包含

build.make文件
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON CACHE INTERNAL FORCE "Export compile commands"

来自default.cmake中的代码片段:

set(CMAKE_EXPORT_COMPILE_COMMANDS ON
CACHE INTERNAL FORCE
"Export compile commands")

但是我不能弄清楚的是(作为一个被吓倒的CMake新手用户)为什么这个最近停止正常工作并开始给出这些警告信息。我可以忽略这些警告,但我不确定其他不好的事情是否也在幕后发生。

我能做些什么(除了等待供应商发布修复,谁知道什么时候会发生),让我的构建再次正常工作?

FORCEset命令的最后一个参数。

set(CMAKE_EXPORT_COMPILE_COMMANDS ON
CACHE INTERNAL FORCE
"Export compile commands")

用文档"FORCE"创建一个缓存变量,并列出一个与set(CACHE)使用模式不匹配的附加参数"Export compile commands":

set(<variable> <value>... CACHE <type> <docstring> [FORCE])

将代码段更改为

set(CMAKE_EXPORT_COMPILE_COMMANDS ON
CACHE INTERNAL
"Export compile commands" FORCE)

和警告应该被修复。您也可以完全删除FORCE,因为FORCE是由INTERNAL类型隐含的。

set(CMAKE_EXPORT_COMPILE_COMMANDS ON
CACHE INTERNAL
"Export compile commands")

最新更新