2

現在、BF インタープリター プロジェクトに取り組んでいます。CMake を使用することにしましたが、適切に動作します。次のツリーに従って、ソース外のビルドに落ち着きました。

+ Project root
|
+-- src/
+-- bin/
+-- build/ <- holds the "rubbish" generated by CMake when generating the Makefile
+-- CMakeLists.txt

プロジェクトをビルドしたいときは、プロジェクトのルート フォルダーから実行します。

cd build
cmake ..
make

CMakeLists.txt に、次の行を追加しました。

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

しかし、ビルド/ビンフォルダーにバイナリを出力することがわかったので、行を次のように編集しました。

SET(EXECUTABLE_OUTPUT_PATH "../bin/"

それは完全にうまく機能しますが、私見では、ちょっと醜いです。これを行う「クリーンな」方法はありset(EXECUTABLE_OUTPUT_PATH ${PROJECT_ROOT}/bin")ますか? 英語は私の母国語ではないため、お返事をいただきありがとうございます。

4

1 に答える 1

3

これを達成するために変数を設定できますCMAKE_RUNTIME_OUTPUT_DIRECTORY-次のようなものです:

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)

基本的に、${PROJECT_ROOT}探している変数はPROJECT_SOURCE_DIRCMAKE_SOURCE_DIR、またはCMAKE_CURRENT_SOURCE_DIRです。それぞれの意味はわずかに異なりますが、基本的なプロジェクトの場合、これらはすべて同じディレクトリを指している可能性があります。

変数を有効にするには、ターゲットを作成する前、つまりCMakeLists.txt で呼び出す前CMAKE_RUNTIME_OUTPUT_DIRECTORYに設定する必要があることに注意してください。add_executable

また、MSVC などのマルチ構成ジェネレーターは、構成ごとのディレクトリをこのproject root/binフォルダーに追加することに注意してください。

于 2013-03-31T16:31:31.123 に答える