20

私は純粋な 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 プロパティを設定するかを知る必要があります。

4

2 に答える 2

9

最小限のテスト プロジェクトの場合、次のようにします。

SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")

次の行に干渉している可能性があります。

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

また、この行に 1 つの発言がありますが、${CMAKE_C_FLAGS}意図はありますか、それとも本当に意味がありました${CMAKE_CXX_FLAGS}か?

于 2013-10-15T22:16:23.860 に答える
5

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++")
于 2014-02-04T04:07:03.070 に答える