首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在XCode中使用哪个CMake变量来设置C++标准库?

在XCode中使用哪个CMake变量来设置C++标准库?
EN

Stack Overflow用户
提问于 2013-10-13 20:23:07
回答 2查看 13.5K关注 0票数 20

我有一个纯的MSVC DLL (没有任何种类的依赖),我已经能够在C++11和Windows上编译一段时间了,现在使用CMake生成项目文件,并使用make/MSVC在各自的本机系统中编译。

我现在想在OSX上编译,但我在让CMake在XCode中设置正确的项目设置以编译动态链接库时遇到了很多问题。

软件版本:

代码语言:javascript
复制
XCode v5.0
CMake v2.8.12

相关的CMake脚本代码:

代码语言:javascript
复制
# Set output directory if Apple OSX:
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
    message("CMAKE HAS DETECTED A OSX SYSTEM - BUILDING FOR XCODE!")

    set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
    set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
    set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
    set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++0x -stdlib=libc++")

    IF(CMAKE_BUILD_TYPE MATCHES Release)
        SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../bin/OSX/Release)
    ENDIF(CMAKE_BUILD_TYPE MATCHES Release)
    IF(CMAKE_BUILD_TYPE MATCHES Debug)
        SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../bin/OSX/Debug)
    ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

但是,这些设置不能正确传递到XCode项目文件中:

您可以看到CMake命令进入了“Other C++ Flags”区域。但是XCode仍然不能编译。但是,如果我将'C++标准库‘变量更改为'libc++’,它将正常编译。

注意:我可以发布编译错误日志,但是我认为上面的错误日志正确地识别了根本原因-我只需要知道实际上是哪个CMake命令设置了上面正确的XCode属性。

EN

回答 2

Stack Overflow用户

发布于 2013-10-16 06:16:24

对于最小的测试项目,执行以下操作:

代码语言:javascript
复制
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")

也许它干扰了下面这行:

代码语言:javascript
复制
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++0x -stdlib=libc++")

还有一点需要注意的是,${CMAKE_C_FLAGS} on intention,或者您真的指的是${CMAKE_CXX_FLAGS}

票数 9
EN

Stack Overflow用户

发布于 2014-02-04 12:07:03

您可以使用set_property

代码语言:javascript
复制
macro (set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE)
set_property (TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY}
    ${XCODE_VALUE})
endmacro (set_xcode_property)

set_xcode_property(${your_target_name} CLANG_CXX_LANGUAGE_STANDARD "c++0x")
set_xcode_property(${your_target_name} CLANG_CXX_LIBRARY "libc++")
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19345180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档