私は純粋な C++11 DLL を持っています (いかなる種類の依存関係もありません) CMake を使用してプロジェクト ファイルを生成し、make/MSVC を使用してそれぞれのネイティブ システムでコンパイルすることで、しばらくの間 Linux と Windows でコンパイルできました。
私は今、OSX でコンパイルしたいのですが、DLL をコンパイルするために CMake が XCode で正しいプロジェクト設定を設定するのに多くの問題を抱えています。
ソフトウェアのバージョン:
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 プロパティを設定するかを知る必要があります。