以下命令对我很有用:
cmake ../ -DBoost_NO_BOOST_CMAKE=BOOL:ON
即,cmake忽略了系统BoostConfig.cmake
,这就是我所需要的。但是如果我尝试通过环境变量做同样的事情:
Boost_NO_BOOST_CMAKE=ON cmake ../
cmake仍在阅读BoostConfig.cmake
,我收到以下错误:
CMake Error at /usr/lib64/boost/BoostConfig.cmake:64 (get_target_property):
我也试过设置为TRUE
,BOOL:ON
等。使用cmake版本3.3.1。任何提示?
更新
添加
set(Boost_NO_BOOST_CMAKE TRUE)
进入CMakeList.txt
效果很好,但添加到PreLoad.cmake
的同一行却没有。在第二种情况下,使用跟踪和调试选项运行cmake会得到以下前几行日志:
Configuring Debug su3-dense ...
Running with debug output on.
Running with trace output on.
/home/langr/projects/su3dense/PreLoad.cmake(1): set(Boost_NO_BOOST_CMAKE TRUE )
/home/langr/projects/su3dense/CMakeLists.txt(1): cmake_minimum_required(VERSION 3.0.0 )
...
因此,显然处理了PreLoad.cmake
文件并设置了变量Boost_NO_BOOST_CMAKE
。为什么忽略此设置?
更新2
我终于通过编写
来实现它set(Boost_NO_BOOST_CMAKE TRUE CACHE BOOL "" FORCE)
进入PreLoad.cmake
。
答案 0 :(得分:0)
创建包含以下内容的PreLoad.cmake
文件最终适用于我:
set(Boost_NO_BOOST_CMAKE TRUE CACHE BOOL "" FORCE)
感谢Florian的帮助。
答案 1 :(得分:0)
我有一个非常相似的问题,但是原因和解决方法不同。
在我的情况下,CMake忽略了Boost_NO_BOOST_CMAKE
,因为我使用了find_package
中的full signature,其中使用了配置模式。
这不起作用:
set(Boost_NO_BOOST_CMAKE ON)
find_package(BOOST_LIB 1.66 NAMES Boost REQUIRED) # full signature
这确实有效:
set(Boost_NO_BOOST_CMAKE ON)
find_package(Boost 1.66 REQUIRED) # basic signature