2011-11-08 80 views
3

ビルドデータを出力する場所をcmakeに指示する方法を教えてください。cmakeにビルドデータの出力先を教えてください。

src /、 というソースコードを持つディレクトリを持っていて、cmakeはたくさんのファイルを出力しているので、そのすべてを ビルド/というディレクトリに置いて欲しいと思います。 しかし、生成されたMakefileをプロジェクトルートの に入れてもらいたいので、アプリケーションをビルドするためにビルドディレクトリに入る必要はありません。

これはcmakeで可能ですか?

私はcmakeのを取得するために管理している置けば、このようなビルドディレクトリ内のI楽しいcmakeの:

cd build/ 
cmake ../src/ 
make 
./hello 

しかし、プロジェクトのルートに滞在し、この

のようなものを入力するとよいでしょう
cmake 
make 
./hello 

CMakeList.txtをプロジェクトルートに置く必要があると思います。私は、オブジェクトファイルをどこに置くことができるか、どこでソースコードを見つけることができるかを魔法のコマンドで伝えています。

おかげ


更新: 私の質問は少しあいまいですので。

私はcmakeのコマンドを実行した後にこれは私が私のツリーは次のようになりたい方法です。そこで問題は、どのようにCMakeLists.txtは、このセットアップでのようになっているはずである

src/CMakeLists.txt 
src/hello.c 
src/hello.h 

build/CMakeCache.txt 
build/CMakeFiles/ 
build/cmake_install.cmake 

CMakeLists.txt 
Makefile 

  • CMakeLists.txt
  • のsrc/CMakeLists.txt

しかし、おそらくそれは可能ではないでしょうか?

+0

これで運がありましたか?私はまったく同じものが欲しい。 – meffordm

+0

@meffordmいいえ、私はこのアイデア(とcmake)をあきらめました。 – Johan

+0

あなたは何をやったのですか?たぶんあなたのソリューション(cmakeを使わなくても)が私のプロジェクトに役立つかもしれません。 – meffordm

答えて

0

が、私は彼がプロジェクトのルートに生成されたMakefileを入れたいので、私は、アプリケーションを構築するために、ビルド
ディレクトリに行く必要はありません。

私が知っているように 、そのために設計されていますが、プロジェクトのルートとタイプに滞在することができませんcmakeの:
-Cは 、あなたのルールやset_target_propertiesカスタムビルドで ./hello
を構築しますあなたは一度だけ、 後方を必要とする「.. CD & & cmakeのを構築する」実行ファイルへ ソースディレクトリを引き起こす置くためにcmakeのを強制することができます。また、 ./build/hello

タイプを使用することができます何か が変更された場合、makeは自動的にcmakeを開始します。

0

cmakeは、新しくビルドディレクトリが必要です。

+0

問題はありません、私のアイデアは、彼自身のすべてでプレーすることを彼に指示することでした。だからビルドと呼ばれるディレクトリ/空です、それは動作するか? – Johan

+0

いいえ、最初の例で行ったように( 'cmake'を実行した後で)ビルドディレクトリに' make'を実行する必要があります。 –

+0

多かれ少なかれcmakeはそのように動作するようには意図されていませんか? – Johan

0

よろしくお願いします。私は、CMakeLists.txt内のいくつかの機械でこれを実現できると思います。もちろん、あなたがプロジェクト開発者でない場合は、オプションではありません。

ルートCMakeLists.txtでは、Makefileを$ {CMAKE_SOURCE_DIR}に書き込むファイル(WRITE ...)コマンドを追加できます。

<target>: 
    cd ${CMAKE_BUILD_DIR} && ${CMAKE_MAKE_PROGRAM} <target> 

だから、今あなたがソースディレクトリからmakeを実行することができ、それは、ビルドディレクトリでプロジェクトをビルドします。このMakefileは、すべての目標のために、これらのコマンドが含まれます。

+0

しかし、私はcmakeを入力してください。 && makeを実行すると、cmakeファイル(CMakeCache.txt、CMakeFiles /、cmake_install.cmake、CMakeList.txt)はbuild dirで終わらず、プロジェクトルートディレクトリに作成されますか? – Johan

+1

そうですね、これについて正確に尋ねていると思います。 – arrowd

+1

多分私は質問を明確にすべきです。 – Johan

-2

単にあなたのsrcディレクトリに

cmake . 
make 

を使用しています。 UNIXシステムの(。)ドットは、現在のディレクトリを指定します。そうすることを心に留めておいてください。実際には推奨されません。あなたのsrcディレクトリにたくさんのビルドファイルがありますので、後で、またはリリース時にクリーンアップする必要があります。

+0

それは質問に近いものではなかった、私はプロジェクトのルートにいて、すべてのコマンドを実行したい。サブディレクトリのいずれにもありません。しかし、私はcmakeがこれをサポートしているとは思わない。 – Johan

関連する問題