我有一个纯 C++11 DLL(没有任何类型的依赖项)我已经能够在 Linux 和 Windows 上编译一段时间了,现在使用 CMake 生成项目文件并使用 make/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 属性。