[英]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.