2012-06-18 4 views
3

У меня есть проект на C++ с использованием cmake. Я хотел бы иметь управление версиями (в смысле предоставления уникального вывода ./myapp --version) на основе git-коммитов. В ручном смысле это что-то вродевывод из пользовательского скрипта как определить макрос

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

и использование макроса VERSION, если определено в коде.

Работает так, как ожидалось. Но как мне записать его в CMakeLists.txt (давайте использовать эхо для простоты)? Как мне избежать этого?

add_definitions(-DVERSION="$(echo 1)") 
+0

Аналогичный, но не идентичный [этот вопрос] (http://stackoverflow.com/questions/1435953/how-can-i-pass-git-sha1-to-compiler-as-definition-using-cmake) – Fraser

ответ

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 

Это похоже на то, что вы на самом деле хотите.

+0

Отлично, что работает, как я и ожидал, большое спасибо! – Miso

Смежные вопросы