我有一个纯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}?