3

cmakeを使用したC++プロジェクトがあります。./myapp --versiongit commitに基づいたバージョン管理(一意の出力を提供するという意味)が必要です。手動でそれはのようなものです

gcc ... -DVERSION=$(git rev-list|wc -l)

コードで定義されている場合は、VERSIONマクロを使用します。

これは期待どおりに機能します。しかし、どのように書き込む必要がありますかCMakeLists.txt(簡単にするためにechoを使用しましょう)?どうすれば逃げられますか?

add_definitions(-DVERSION="$(echo 1)")
4

1 に答える 1

1

cmake 2.8.8では、次のことができます。

add_definitions(demo -D`echo VERSION=\\`git rev-list HEAD|wc -l\\``)

と:

int main(int argc, char *argv[]) {
  printf("Version: %d", VERSION);

次のようにコンパイルするには:

/usr/bin/gcc   -std=c99 demo -D`echo VERSION=\`git rev-list HEAD|wc -l\`` -o CMakeFiles/demo.dir/src/demo.c.o   -c /home/doug/projects/libar/src/demo.c

そして結果は:

build$ ./demo
Version: 88

これはあなたが実際に望んでいるもののようです。

于 2012-08-09T04:00:17.997 に答える