cmake 生成Makefile时指定c/c++编译器
来源:互联网 发布:java毕业论文 编辑:程序博客网 时间:2024/05/16 12:30
linux下在使用cmake生成Makefile的时候,如果不指定编译器,则默认是使用系统原生的编译器,
当操作系统中安装了新的版本的编译器,多个版本编译器共存的时候,如果想使用新版本的编译器,在cmake生成Makefile的时候就需要指定编译器。
这就是我目前遇到的情况:
我的项目代码是用C++11写的,需要支持C++11的编译器,而我使用的CentOS6.5原生的编译器是gcc4.4.7(位置/usr/bin/g++),所以我下载了gcc5.2.0编译,并使用默认安装(位置:/usr/local/bin/g++),两个版本的编译器共存于操作系统。
不论环境变量$PATH怎么设置,cmake在生成Makefile时,如果不指定编译器,生成的Makefile都会调用/usr/bin下的g++/gcc。
所以这种情况下必须指定编译器。
cmake-gui
用cmake-gui配置Makefile的时候如下操作:
这时不能选择默认的第一项(Use default native compilers),而是要选择第二项(Specify native compilers)
在这里填写指定c/c++编译器的路径
shell脚本
那么如果要在脚本中调用cmake生成Makefile时,应该如何写脚本呢?
#!/bin/shGXX_PATH=## 先判断原生的编译器是不是满足要求if [ `/usr/bin/g++ -dumpversion` != "5.2.0" ]then ## 再判断另外安装的编译器是不是满足要求 if [ `/usr/local/bin/g++ -dumpversion` = "5.2.0" ] then ## 指定c/c++编译器路径,并指定CMAKE_BUILD_TYPE为RELEASE GXX_PATH="-DCMAKE_CXX_COMPILER:FILEPATH=/usr/local/bin/g++ -DCMAKE_C_COMPILER:FILEPATH=/usr/local/bin/gcc -DCMAKE_BUILD_TYPE:STRING=RELEASE" ## 进一步可以参考生成的Makefile所在文件夹下的CMakeCache.txt文件进行更多选项的配置 else ## 找不到符合要求版本的编译则报错退出 echo "g++/gcc compiler required version 5.2.0" exit -1 fifiBUILD_FOLDER=../build## 保存当前路径位置,切换到BUILD_FOLDERpushd $BUILD_FOLDER## 生成 Makefile,cmake "`dirs +1`" $GXX_PATH -G "Eclipse CDT4 - Unix Makefiles"## 这里-G "Eclipse CDT4 - Unix Makefiles"用于生成eclipse格式的Makefile文件,## 如果不指定,可以正常用make编译,但eclipse下不能对项目工程进行编译和配置。## 恢复当前路径popd
0 0
- cmake 生成Makefile时指定c/c++编译器
- 使用Cmake生成makefile
- Makefile自动生成:cmake
- cmake构建时指定编译器架构(x86 or x64)
- 使用cmake来生成makefile
- C编译器剖析_2.1 从Makefile走起
- C/C++自动生成makefile工具 supermake
- C语言生成指定长度随机字符串
- (转)cmake构建时指定编译器架构(x86 or x64)
- Makefile模板 之CC指定编译器
- makefile -C
- 如何使用CMAKE生成makefile文件
- 使用CMake工具生成makefile文件
- Effective C++(6) 如何拒绝编译器的自动生成函数
- extern C的影响编译器生成的符号表
- C编译器剖析_6.1 汇编代码生成_简介
- 了解编译器默默生成哪些函数(Effective C++_5)
- Effective C++--条款06:如何禁止编译器自动生成函数
- Android Animation学习(四) ApiDemos解析:多属性动画
- 权力的游戏
- Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition
- javascript:history.go()和History.back()的区别(转载)
- Android Animation学习(六) View Animation介绍
- cmake 生成Makefile时指定c/c++编译器
- Android Activity和Fragment的转场动画
- ubuntu 下Linpack安装,MPI+GOTOBLAS2
- EF Code First
- 元旦的一个梦
- Button 点击事件(参数)
- hadoop mapreduce统计的小例子
- Codeforces Good Bye 2015
- typedef常见用法