Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >clang / g++和libc++ /libstdc++之间的切换

clang / g++和libc++ /libstdc++之间的切换
EN

Stack Overflow用户
提问于 2017-04-27 16:04:43
回答 1查看 9.7K关注 0票数 5

这是我的第一个cmake文件。我有一个同时带有clang和g++的linux系统。此外,还安装了libc++。我在Mac (xcode)上开发,但部署到linux上。我正在写一个cmake文件,在这个文件中我可以选择clang或g++以及libc++或libstdc++。所以有4种可能的组合。

我知道如何选择编译器并在其上强制使用c++11,但是我不知道如何指定标准库。有什么建议吗?

这就是我到目前为止所知道的:

代码语言:javascript
运行
AI代码解释
复制
## cmake ###
cmake_minimum_required (VERSION 3.5)

#set project directories
set(ProjectDirectory ${CMAKE_SOURCE_DIR}) #.../Project/
set(BuildDirectory ${ProjectDirectory}/Build)
set(ProductDirectory ${ProjectDirectory}/Products)
set(sourceDirectory ${ProjectDirectory}/Source)

#print project directories
message(${ProjectDirectory})
message(${BuildDirectory})
message(${ProductDirectory})

#configure cmake
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ProductDirectory})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ProductDirectory})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ProductDirectory})

set(CMAKE_VERBOSE_MAKEFILE on)

#compiler and standard library settings
set(CMAKE_CXX_COMPILER "clang++")
set(CMAKE_CXX_STANDARD 11)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -v -stdlib=libc++")
        #libstdc++ #linux
        #libc++    #OS X

#compiler flags
SET( CompilerFlags  " ")
#SET( CompilerFlags  "${CompilerFlags} -stdlib=libc++" )
SET( CompilerFlags  "${CompilerFlags} -Wno-unknown-pragmas" )
SET( CompilerFlags  "${CompilerFlags} -Wall" )
SET( CompilerFlags  "${CompilerFlags} -Wextra" )

set (CMAKE_CXX_FLAGS ${CompilerFlags})

#linker flags
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")

#message(${CMAKE_CXX_FLAGS})

##################
### Libraries ###
################
### common library ###
project(common)

#message(STATUS ${CMAKE_CXX_FLAGS})

#source files
#set (commonSource ${sourceDirectory}/Object/object.cpp) #specify specific files
file(GLOB_RECURSE commonSource ${sourceDirectory}/Object/*.cpp) # recursive

#targets
add_library (common STATIC ${commonSource})

#target_compile_options (common PUBLIC ${CompilerFlags})


#####################
### Applications ###
###################
### Hello project ###
project (hello)

#source files
#set (helloSource ${sourceDirectory}/main.cpp)

#targets
#add_executable (hello ${helloSource})

#linking
#target_link_libraries (hello common)


#install(TARGETS common DESTINATION ${ProductDirectory})

我在控制台上运行此命令

代码语言:javascript
运行
AI代码解释
复制
../Project/Build$ rm -r *; rm -r ../Products/*; cmake ..; make VERBOSE=1;

我的文件夹结构是:

代码语言:javascript
运行
AI代码解释
复制
Project
    Source
    Build
    Products
    CMakeLists.txt

我还注意到编译器标志有时会被忽略,只在我第二次运行cmake和make时使用。

此外,我在代码中使用了大量的#warning todo,如何在编译期间禁用这些警告?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-29 03:02:02

这有点棘手,因为我不相信CMake有一种选择标准库的内置方法。我要做的就是把它传递给链接器标志。例如:

代码语言:javascript
运行
AI代码解释
复制
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")

但是,CMake确实支持设置编译器:

代码语言:javascript
运行
AI代码解释
复制
set(CMAKE_CXX_COMPILER "clang++")
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43662736

复制
相关文章
JS如何使用sessionStorage实现计数器功能
http://mpvideo.qpic.cn/0bc3rmaheaaadeaayq3ipvrvbc6dokfqa4qa.f10002.mp4?dis_k=4031fc91448cb61bf867060
itclanCoder
2022/12/07
1.5K0
JS如何使用localStorage实现计数器功能
http://mpvideo.qpic.cn/0b2esuabeaaakmag6bliabrvbfodckkqaeqa.f10002.mp4?dis_k=0168ae8cae63904a361d391
itclanCoder
2022/12/07
1.7K0
PBI-操作实战:怎么在表里增加合计数?
大海:你这个用的是简单的数据“表”,不带分类汇总功能的,要改为矩阵,具体方法如下:
大海Power
2021/08/30
1.2K0
如何在Python中使用静态变量在计数
今天,在用Python写一个统计一个文件下有多少文件的小标本时,遇到了一个很棘手的问题。如何在Python中使用静态变量来计数。然后,就在网上一通查找,找的方法都是利用类的方法来实现静态变量。说实话没有看太懂,另外我想如果用类成员当做静态变量来计数是不是很麻烦,我们还要编写ADD()函数,来实现加1操作(因为要计数吗?)。其实,主要原因还是没有看懂如何用类成员的方式实现静态变量,因此,我放弃了这种方法。
py3study
2020/01/08
1.7K0
如何优雅的设计数据导出功能?
对于一些报表性的后台,有些会提供数据导出功能。如果查询维度过多又都是耗时操作,那就像是开了潘多拉盒子,会造成比较恶劣的后果。
Criss@陈磊
2019/11/14
2K0
如何优雅的设计数据导出功能?
如何启用计算机的休眠,电脑休眠
在休眠时可以完全断开电脑的电源,自动关闭显示器和硬盘的时间设置为多长时间比较合适应看你需要了。
全栈程序员站长
2022/09/14
2K0
查询请求增加时,如何做主从分离?
依据一些云厂商的 Benchmark 的结果,在 4 核 8G 的机器上运行 MySQL 5.7 时,大概可以支撑 500 的 TPS 和 10000 的 QPS。这时,运营负责人说正在准备双十一活动,并且公司层面会继续投入资金在全渠道进行推广,这无疑会引发查询量骤然增加的问题。那么当查询请求增加时,应该如何做主从分离来解决问题。
码农架构
2020/10/26
4410
查询请求增加时,如何做主从分离?
如何使用Hunt-Sleeping-Beacons识别休眠的Beacon
 关于Hunt-Sleeping-Beacons  Hunt-Sleeping-Beacons项目的主要功能是帮助广大研究人员在运行时或其他正在运行进程的上下文场景中识别休眠的Beacon。为了实现这个目标,我们通过观察发现,Beacon会在回调过程中尝试调用sleep函数。在调用sleep的过程中,会将线程的状态设置为“DelayExecution”,而我们就可以将其作为第一个指标来识别线程是否在执行某个Beacon。 将所有状态为“DelayExecution”的线程全部枚举出来之后,我们就可以通过多种
FB客服
2023/03/30
5090
如何使用Hunt-Sleeping-Beacons识别休眠的Beacon
64.如何为爬虫程序增加限速功能
爬虫程序,在爬取网站速度过快时,就会面临封禁的风险。因此,为了降低这样的风险,我们可以在两次爬取之间,添加一定的延时,从而起到限速的作用。下面我们先来编写一个具有限速功能的程序。
TalkPython
2020/02/17
7240
如何实现RTS游戏中鼠标在屏幕边缘时移动视角功能
本文简单介绍如何在Unity中实现即时战略游戏中鼠标在屏幕边缘的时候移动视角的功能,如图所示:
CoderZ
2022/12/26
1.2K0
如何实现RTS游戏中鼠标在屏幕边缘时移动视角功能
MCU如何实现对外部脉冲信号的计数功能?
原理很简单,利用GPIO的上升沿或者下降沿中断,进中断的次数就是脉冲的个数。只需要在中断服务函数里计数即可。
用户2366192
2023/03/06
9360
MCU如何实现对外部脉冲信号的计数功能?
【Android休眠】之Android休眠机制
休眠,简而言之就是设备在不需要工作的时候把一些部件、外设关掉(掉电或让它进入低功耗模式)。 为什么要休眠呢?一言以蔽之:省电。 休眠分主动休眠和被动休眠。主动休眠:比如我电脑不用了,就通过设置让系统进入休眠模式;被动休眠:系统检测到自己闲的慌,为了节约故,自己就休眠去了。
易寒
2021/12/31
2.1K0
使用 AI 为 Web 网页增加无障碍功能
根据世界健康组织的统计,全球约有 2.85 亿位视力障碍人士,仅美国就有 810 万网民患视力障碍。
疯狂的技术宅
2019/03/28
8830
使用 AI 为 Web 网页增加无障碍功能
【Android休眠】之Android休眠机制
休眠,简而言之就是设备在不需要工作的时候把一些部件、外设关掉(掉电或让它进入低功耗模式)。
233333
2020/01/02
4.5K0
Typecho增加打赏功能
增加custom.php 路径 usr/themes/Joe/public <?php // 收款设置 $ZNPaySet = new Typecho_Widget_Helper_
小东东
2023/03/20
5140
增加MATLAB屏幕截图功能
借助Java或者Python实现截取屏幕指定矩形区域 Java实现 function outputImage=screenCapture(subRegion,outputFile) robo = java.awt.Robot; if ~exist('subRegion','var') || isempty(subRegion) %获取屏幕尺寸 t = java.awt.Toolkit.getDefaultToolkit(); rectangle = java.awt.Rectangl
万木逢春
2019/04/30
1.7K0
为软件增加支付功能
https://openhome.alipay.com/develop/manage
灬沙师弟
2023/09/06
2990
为软件增加支付功能
点击加载更多

相似问题

在使用休眠功能时,如何增加计数?(C语言)

20

JavaScript休眠功能

20

如何关闭睡眠/休眠功能?

110

在使用exec时增加计数器

32

休眠生成计数(1)

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文