我已经用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新手用户)为什么这个最近停止正常工作并开始给出这些警告信息。我可以忽略这些警告,但我不确定其他不好的事情是否也在幕后发生。
我能做些什么(除了等待供应商发布修复,谁知道什么时候会发生),让我的构建再次正常工作?
FORCE
是set
命令的最后一个参数。
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")