1

CMakeでコンパイルされている巨大なプロジェクトがあります。それはかなり長い間開発されており、8000以上のソース/ヘッダーファイル(500Mバイト以上、500以上のCMakefile.txtファイル)があります。

彼らはこのようなディレクトリ構造を使用しています

PROJECT_NAME
  src
    / subdir_name
    / other_dir_name
    / some_different_dir
    / MY_SPECIFIC_DIR             <---
    / yet_another_dir
   build

次のように、外部ソースでビルドします。

name@host:~/PROJECT_NAME/build> cmake ../src
name@host:~/PROJECT_NAME/build> make all

次に、1つのBIGバイナリとしてビルドされます(詳細は重要ではありません)。


私は他に何も触れることができず、コンテンツだけですMY_SPECIFIC_DIR-それはソースファイルとCMakeファイルです。だから、私はどういうわけかMY_SPECIFIC_DIR 微調整されたCMakefile.txtファイル にソースコードを持っていて、それを次のように構築したいと思います:

name@host:~/PROJECT_NAME/build_specific> cmake ../src/MY_SPECIFIC_DIR
name@host:~/PROJECT_NAME/build_specific> make all

これにより、他のサブプロジェクトへのいくつかのリンクを使用して、物事MY_SPECIFIC_DIRを単一のバイナリに組み込む必要があります。しかし、(明らかに)プロジェクト全体のコンパイル方法については何も変更しないでください。

私の質問は:

CMake を使用して希望のセットアップは可能ですか?
ルートプロジェクトであることをテストしCMakeFile.txtて、全体としてビルドする場合とは異なる方法でビルドすることはできますか?


そうでない限り、私は別の手段に頼り、makeこれに標準を使用する必要があります。私はCMakeを知らないので、YES / NOの答えを期待しています。これを実現するためのテクニックとしても、望ましいです。そして、CMakeを学び、それを実行します。

また、CMakeバージョン2.6を使用する必要があります。

ありがとう

4

1 に答える 1

2

基本的なコンセプトは使用することです

if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
   ... code for stand-alone app
else()
   ... what was in this file before
endif()
于 2012-09-25T22:45:46.650 に答える