簡體   English   中英

什么CMake變量用於在XCode中設置C ++標准庫?

[英]What CMake variable is used to set C++ Standard Library in XCode?

我有一個純C ++ 11 DLL(沒有任何類型的依賴)我已經能夠在Linux和Windows上編譯一段時間了,現在使用CMake生成項目文件並使/ MSVC在每個相應的本機系統中編譯。

我想現在在OSX上編譯,我遇到很多問題讓CMake在XCode中設置正確的項目設置來編譯DLL。

軟件版本:

XCode v5.0
CMake v2.8.12

相關的CMake腳本代碼:

# 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命令進入“其他C ++標志”區域。 但是XCode仍然無法編譯。 但是,如果我將'C ++標准庫'變量更改為'libc ++',它將編譯正常。

注意:我可以發布編譯錯誤日志但是我認為上面正確地確定了根本原因 - 我只需要知道CMake命令實際上在上面設置了正確的XCode屬性。

對於最小的測試項目,以下工作:

SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")

也許它干擾了以下幾行:

set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++0x -stdlib=libc++")

這一行還有一個評論,就是有${CMAKE_C_FLAGS}的意圖,還是你真的是${CMAKE_CXX_FLAGS}

你可以使用set_property

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++")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM