cmake中修改默认编译器的两个问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake中修改默认编译器的两个问题相关的知识,希望对你有一定的参考价值。
参考技术A 在为交叉编译工程写cmake脚本时,可以在脚本里修改默认编译器的值。这种方法会碰到下面两个问题例如,下面是一个经过简化后的CMakeLists.txt:
cmake+make的输出如下:
可以看到,set(CMAKE_CXX_COMPILER "/usr/bin/g++-4.8")命令之后,默认编译器已经由g++-5.5修改为了g++-4.8,且编译阶段确实也使用的是g++-4.8。但是此时CMAKE_CXX_COMPILER_VERSION的值仍然是5.5。
例如,顶层CMakeLists.txt中的内容如下:
子目录sub/CMakeLists.txt中只有一行:
cmake就会陷入死循环:
问题1:
问题2:
但是有个更简单的方法,可以解决以上所有问题:
在第一个project命令前,修改默认编译器的定义。
例如:
使用与系统默认不同的编译器运行 CMake
【中文标题】使用与系统默认不同的编译器运行 CMake【英文标题】:Run CMake with a different compiler than the system default 【发布时间】:2014-06-16 08:49:05 【问题描述】:我正在尝试build something that requires CMake,但是当我尝试时:
cmake -DBUILD_EXAMPLES=YES -DBUILD_TESTS=YES
我得到错误:
Your systems default compiler is GCC. This project makes use of c++11
features present only in versions of gcc >= 4.9. You can use a different
compiler by re-running cmake with the command switch "-D
CMAKE_CXX_COMPILER=<compiler>"
我尝试过使用CMAKE_CXX_COMPILER=c++11
和CMAKE_CXX_COMPILER=g++11
,但它们也会出错。这是因为我使用了错误的变量还是因为我没有安装 c++11?解决办法是什么?
【问题讨论】:
您确定您的 gcc 至少为 4.9 吗?我想不是。此外,您设置的CMAKE_CXX_COMPILER
的值都不是我所知道的 c++ 编译器的可执行名称。
【参考方案1】:
您的编译器似乎太旧了。一定要检查gcc -v
的输出。
如果您不想替换系统的默认编译器,可以在命令行中指定替代编译器,如下所示:
CXX=g++49 CC=gcc49 cmake -DBUILD_EXAMPLES=YES -DBUILD_TESTS=YES <path_to_source>
其中g++49
和gcc49
是您系统上替代编译器的名称。
大多数 Linux 发行版允许同时安装多个版本的 gcc,因此您应该能够轻松实现这一点。
【讨论】:
以上是关于cmake中修改默认编译器的两个问题的主要内容,如果未能解决你的问题,请参考以下文章