我尝试用cmake更改编译器:
SET(CMAKE_C_COMPILER "/opt/rh/devtoolset-2/root/usr/bin/gcc")
SET(CMAKE_CXX_COMPILER "/opt/rh/devtoolset-2/root/usr/bin/g++")在调用" project“命令之前,我在项目开始时就这样做了。但是,当我调用cmake时,我得到了一个无限循环,我有以下输出:
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /opt/rh/devtoolset-2/root/usr/bin/gcc
-- Check for working C compiler: /opt/rh/devtoolset-2/root/usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /opt/rh/devtoolset-2/root/usr/bin/g++
-- Check for working CXX compiler: /opt/rh/devtoolset-2/root/usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Doxygen: /usr/bin/doxygen (found version "1.6.1")
-- Looking for C++ include tut.h
-- Looking for C++ include tut.h - found
-- [STATUS] Found tut.h
-- Configuring done
You have changed variables that require your cache to be deleted.
Configure will be re-run and you may have to reset some variables.
The following variables have changed:
CMAKE_CXX_COMPILER= /usr/bin/c++
CMAKE_CXX_COMPILER= /usr/bin/c++所以我在一个无限循环中一次又一次地收到这条消息,即使我在调用cmake之前删除了缓存.
编辑:解决方案非常简单:您需要使用cmakeVersion2.8.9,并且问题不会出现。
发布于 2015-10-06 07:53:55
解决方案非常简单:您需要使用cmakeVersion2.8.9,并且问题不会出现。
发布于 2017-08-13 17:26:29
因为这是我在谷歌上的第一个结果,我想我会为昆汀提供一个替代的解决方案。
如果使用-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake调用cmake命令,则可以将CMAKE_C_COMPILER和CMAKE_CXX_COMPILER重写放到一个新的toolchain.cmake文件中,而cmake将正确地加载覆盖,而不需要无限循环。
这种解决方案为那些无法轻松升级cmake的人(比如您是一个非根用户和非sudo用户)、那些只想避免升级包或管理额外软件包的人、或者那些不想麻烦他们的sysadmin的人提供了一个解决方案。此外,如果您想让toolchain.cmake文件动态地选择它,那么它仍然可以执行逻辑查找适当的或最新的devtoolset。
此解决方案将不适用于那些不愿或不能将-DCMAKE_TOOLCHAIN_FILE参数添加到cmake调用中的人。
发布于 2021-01-13 10:22:00
原因可能是其他cmake模块更改了您设置的变量。因此,找到cmake代码并将其放在命令(SET“/opt/rh/devtoolset-2/root/usr/bin/g++”)之前,它应该得到解决。
我在pybind11子模块中遇到了以下问题
SET(CMAKE_C_COMPILER /usr/bin/gcc)
SET(CMAKE_CXX_COMPILER /usr/bin/g++)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -march=native")
add_subdirectory(pybind11)解决办法是将其改为:
add_subdirectory(pybind11)
SET(CMAKE_C_COMPILER /usr/bin/gcc)
SET(CMAKE_CXX_COMPILER /usr/bin/g++)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -march=native")https://stackoverflow.com/questions/32306648
复制相似问题