8

最近、Qtプロジェクトをからqmakeに移植しましたCMake#define私のメインプログラムには、ディレクティブに依存する値が含まれています。

CMakeそのdefineディレクティブを外部で指定し、同じ実行可能ファイルの3つの異なる名前のバージョンをビルドしたいと思います。

どうすればいいですか?

私は見ましset_target_propertiesたが、これはライブラリに対してのみ機能し、実行可能ファイルに対しては機能しません。

たとえば、次のプログラムが必要です。

 int main()
 {

    cout << BUILDTYPE << endl;
 }

BUILDTYPE "define" たとえば、私CMakeLists.txtが指定したいのに基づいて、3つの異なるフレーバー(3つの実行可能ファイル)でコンパイルされます

add_executable(myAppV1 -DBUILDTYPE=1)
add_executable(myAppV2 -DBUILDTYPE=2)
add_executable(myAppV3 -DBUILDTYPE=3)

しかし、これは正しい構文ではありません。いくつかのヒント?そして私は印刷する3つの実行可能ファイルを取得します

4

2 に答える 2

9

それset_target_propertiesがうまくいかないのですか?これはどう:

set_target_properties(myAppV1 PROPERTIES COMPILE_FLAGS "-DBUILDTYPE=1")

また:

set_target_properties(myAppV1 PROPERTIES COMPILE_DEFINITIONS "BUILDTYPE=1")

私のマシンでは動作します:

add_executable(myAppV1 main.cpp)
add_executable(myAppV2 main.cpp)
set_target_properties(myAppV1 PROPERTIES COMPILE_DEFINITIONS "BUILDTYPE=1")
set_target_properties(myAppV2 PROPERTIES COMPILE_DEFINITIONS "BUILDTYPE=2")
于 2012-04-03T08:48:16.933 に答える
0

別の方法は次のとおりです。

mkdir two directory
buildflavor1
buildflavor2

最初のサブディレクトリで次のコマンドを実行します。

cmake -DFLAVOR=OPTION1 ..

2回目の実行:

run cmake -DFLAVOR=OPTION2 ..

したがって、同じ名前でコンパイルフラグが異なる2つの実行可能ファイルは、独自の機能.oなどです。

于 2016-12-18T15:19:32.740 に答える