質問

ポータブルなビルドシステムをどのように作成できるか疑問に思っています(ステップバイステップ)。私は現在 cmake を使用しています。これは、アーチターゲットが 1 つだけで最初からセットアップが簡単だったためですが、今ではパッケージ化する必要があります。私が開発しているライブラリを、テスト中の Arch に移植可能にする最善の方法は何かと考えています。

アーチに応じて定義するには config.h が必要であることはわかっていますが、これがどの程度自動的に行われるかはわかりません。

他の方法でビルド システムを構築することも大歓迎です。

役に立ちましたか?

解決

CMake を使用するだけで、非常に簡単です。

次のものが必要です。

まず、構成の詳細を確認することを意味します。たとえば、ある関数の名前がプラットフォームによって異なることがわかっている場合、次のように使用できます。 TRY_COMPILE それを発見するには:

TRY_COMPILE(HAVE_ALTERNATIVE_FUNC 
    ${CMAKE_BINARY_DIR}
    ${CMAKE_SOURCE_DIR}/alternative_function_test.cpp
    CMAKE_FLAGS -DINCLUDE_DIRECTORIES=xxx
)

どこ alternative_function_test.cpp は、代替定義でのみコンパイルされるソース ディレクトリ内のファイルです。

これにより変数が定義されます HAVE_ALTERNATIVE_FUNC コンパイルが成功した場合。

次に、この定義がソースに影響を与えるようにする必要があります。コンパイルフラグに追加することもできます

IF(HAVE_TR1_RANDOM)
    ADD_DEFINITIONS(-DHAVE_TR1_RANDOM)
ENDIF(HAVE_TR1_RANDOM)

または、 config.h ファイル。作成する config.h.in 次の行で

#cmakedefine HAVE_ALTERNATIVE_FUNCS

そして、 config.h ファイルのこの行まで CMakeLists.txt (見る CONFIGURE_FILE)

CONFIGURE_FILE(config.h.in config.h @ONLY)

#cmakedefine に翻訳されます #define または #undef CMake 変数に応じて異なります。

ところで、エディアンネスのテストについては、次を参照してください。 このメール

他のヒント

私は今のところ、私のためによく働いているGNU autoconfの/ automakeのツールチェーンを使用してきました。私は本当にあなたが問題をエンディアンに起因するのPowerPC上で構築する場合に重要であるのLinux / x86の(および64ビット)とMac、に焦点を当てています。

のautoconfを使用すると、マクロでホストプラットフォームを確認することができます:

AC_CANONICAL_HOST

と使用エンディアンを確認します:

AC_C_BIGENDIAN

Autoconfが、その後、あなたのコード内で使用できるconfig.hのために定義を追加します。

私は確かではない午前には、GNUのautotoolsのは、Windows上で動作するので、Windowsは、あなたの目標の一つであるならば、あなたは、既存のcmakeのビルドシステムと同様の機能を発見したほうが良いかもしれどれだけ(試したことがありません)。

のautotoolsの良いプライマーのために、持っているこちらをご覧ます:

http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top