Thread View: pl.comp.lang.c
9 messages
9 total messages
Started by Borneq
Tue, 30 Jan 2018 21:24
Automatyczna informacja o wersji
Author: Borneq
Date: Tue, 30 Jan 2018 21:24
Date: Tue, 30 Jan 2018 21:24
4 lines
1047 bytes
1047 bytes
Nie chodzi tyle o to, kiedy exec był budowany, bo mógłby przed chwilą, ale czy da się wsadzić informacje o haszu commita gita to kompilacji, aby program konsolowy wyświetlił go? Czy GnuC jest na tyle zintegrowany z gitem?
Re: Automatyczna informacja o wersji
Author: Adam Wysocki
Date: Wed, 31 Jan 2018 12:58
Date: Wed, 31 Jan 2018 12:58
20 lines
1515 bytes
1515 bytes
Borneq <borneq@antyspam.hidden.pl> wrote: > Nie chodzi tyle o to, kiedy exec był budowany, bo mógłby przed chwilą, > ale czy da się wsadzić informacje o haszu commita gita to kompilacji, > aby program konsolowy wyświetlił go? > Czy GnuC jest na tyle zintegrowany z gitem? 1. Włączyłem stoper 2. Odpaliłem Google 3. Wpisałem "git hash in c" 4. Pojawił mi się pierwszy link do tematu na SO Wszystko zajęło mi 4 sekundy. Przejrzenie odpowiedzi na SO to kolejne 25 sekund. A ile czasu zajęło Ci napisanie tego posta? -- [ Email: a@b a=grp b=chmurka.net ] [ Web: http://www.chmurka.net/ ]
Re: Automatyczna informacja o wersji
Author: Borneq
Date: Wed, 31 Jan 2018 13:18
Date: Wed, 31 Jan 2018 13:18
29 lines
1830 bytes
1830 bytes
W dniu 31.01.2018 o 13:58, Adam Wysocki pisze:
> Wszystko zajęło mi 4 sekundy. Przejrzenie odpowiedzi na SO to kolejne 25
> sekund.
Tutaj mamy perl i awk, a ja chciałbym GnuC+CMake
Jak to zrobiłem:
pierwszym problem jest to że zmienna preprocesora jest bez znaków
cudzysłowu.
Więc nie można zrobić string commitver = GIT_SHA1;
Trzeba się posłużyć "tajemniczym" idiomem:
#define xstr(s) str(s)
#define str(s) #s
string commitver = xstr(GIT_SHA1);
Teraz, jak ustawić GIT_SHA1 w CMake? (jeszcze nie wiem, jak ustawić dla
gita w środowisku CodeBlocks)
Otóż jest repozytorium: https://github.com/rpavlik/cmake-modules
gdzie są GetGitRevisionDescription.cmake i
GetGitRevisionDescription.cmake.in
Teraz robimy w CMakeLists.txt :
include(GetGitRevisionDescription.cmake)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
a dalej
add_definitions("-DGIT_SHA1=${GIT_SHA1}")
I działa!
Re: Automatyczna informacja o wersji
Author: Bartłomiej Golenko
Date: Thu, 01 Feb 2018 16:17
Date: Thu, 01 Feb 2018 16:17
20 lines
1534 bytes
1534 bytes
Borneq <borneq@antyspam.hidden.pl> wrote:
> Teraz robimy w CMakeLists.txt :
> include(GetGitRevisionDescription.cmake)
> get_git_head_revision(GIT_REFSPEC GIT_SHA1)
> a dalej
> add_definitions("-DGIT_SHA1=${GIT_SHA1}")
Ja to robię tak:
gitversion.cpp.in:
const char * g_GIT_SHA1 __attribute__((used)) = "@GIT_REFSPEC@ @GIT_SHA1@";
CMakeLists.txt
include ( GetGitRevisionDescription )
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
git_describe(GIT_REFSPEC --all --dirty=-dirty)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/gitversion.cpp.in"
"${CMAKE_CURRENT_BINARY_DIR}/src/gitversion.cpp" @ONLY)
B.
Re: Automatyczna informacja o wersji
Author: Borneq
Date: Fri, 02 Feb 2018 22:26
Date: Fri, 02 Feb 2018 22:26
5 lines
1200 bytes
1200 bytes
W dniu 01.02.2018 o 17:17, Bartłomiej Golenko pisze: > const char * g_GIT_SHA1 __attribute__((used)) = "@GIT_REFSPEC@ @GIT_SHA1@"; > git_describe(GIT_REFSPEC --all --dirty=-dirty) jakie informacje są w GIT_REFSPEC ?
Re: Automatyczna informacja o wersji
Author: Marcin Konarski
Date: Sun, 04 Feb 2018 18:27
Date: Sun, 04 Feb 2018 18:27
35 lines
2215 bytes
2215 bytes
On Wed, 31 Jan 2018 14:18:46 +0100, Borneq <borneq@antyspam.hidden.pl> wrote: > W dniu 31.01.2018 o 13:58, Adam Wysocki pisze: >> Wszystko zajęło mi 4 sekundy. Przejrzenie odpowiedzi na SO to kolejne 25 >> sekund. > > Tutaj mamy perl i awk, a ja chciałbym GnuC+CMake > Jak to zrobiłem: > pierwszym problem jest to że zmienna preprocesora jest bez znaków > cudzysłowu. > Więc nie można zrobić string commitver = GIT_SHA1; > Trzeba się posłużyć "tajemniczym" idiomem: > > #define xstr(s) str(s) > #define str(s) #s > string commitver = xstr(GIT_SHA1); > > Teraz, jak ustawić GIT_SHA1 w CMake? (jeszcze nie wiem, jak ustawić dla > gita w środowisku CodeBlocks) Możesz podejżeć jak ja to zrobiłem: https://github.com/AmokHuginnsson/yaal/blob/c48c6d61072a9b6a2f98d354562fc6786da89509/_aux/cmake/common.cmake#L306 Ugólnie wszystko w _aux co ma w sobie frazę commit-id lub update-commit-id. https://github.com/AmokHuginnsson/yaal/blob/master/_aux/update-commit-id.cxx [for Unix] https://github.com/AmokHuginnsson/yaal/blob/master/_aux/update-commit-id https://github.com/AmokHuginnsson/yaal/blob/master/_aux/commit-id -- Amok Huginnsson GCS d? s:+ a C+++$() UBLS++++$ P L++++$ E--- W++(-) N++ w--- O M- V- PS+ PE++ Y PGP t--- 5-- X- R !tv b++ DI+++ D+ G e* h+ r- y**
Re: Automatyczna informacja o wersji
Author: Borneq
Date: Sun, 04 Feb 2018 19:41
Date: Sun, 04 Feb 2018 19:41
5 lines
1261 bytes
1261 bytes
W dniu 04.02.2018 o 19:27, Marcin Konarski pisze: > https://github.com/AmokHuginnsson/yaal/blob/c48c6d61072a9b6a2f98d354562fc6786da89509/_aux/cmake/common.cmake#L306 > Ugólnie wszystko w _aux co ma w sobie frazę commit-id lub update-commit-id. Modyfikuje plik commit_id.hxx?
Re: Automatyczna informacja o wersji
Author: Marcin Konarski
Date: Sun, 04 Feb 2018 20:21
Date: Sun, 04 Feb 2018 20:21
18 lines
1685 bytes
1685 bytes
On Sun, 4 Feb 2018 20:41:09 +0100, Borneq <borneq@antyspam.hidden.pl> wrote: > W dniu 04.02.2018 o 19:27, Marcin Konarski pisze: >> https://github.com/AmokHuginnsson/yaal/blob/c48c6d61072a9b6a2f98d354562fc6786da89509/_aux/cmake/common.cmake#L306 >> Ugólnie wszystko w _aux co ma w sobie frazę commit-id lub update-commit-id. > > Modyfikuje plik commit_id.hxx? Tak, commit_id.hxx nie jest w repo, jest generowany przez build na zasadzie config.h(xx). Przy takim układzie update-commit-id musi być uruchomiony tylko raz na początku danego buildu. -- Amok Huginnsson GCS d? s:+ a C+++$() UBLS++++$ P L++++$ E--- W++(-) N++ w--- O M- V- PS+ PE++ Y PGP t--- 5-- X- R !tv b++ DI+++ D+ G e* h+ r- y**
Re: Automatyczna informacja o wersji
Author: Bartłomiej Golenko
Date: Tue, 06 Feb 2018 21:39
Date: Tue, 06 Feb 2018 21:39
12 lines
1398 bytes
1398 bytes
Borneq <borneq@antyspam.hidden.pl> wrote: > W dniu 01.02.2018 o 17:17, Bartłomiej Golenko pisze: >> const char * g_GIT_SHA1 __attribute__((used)) = "@GIT_REFSPEC@ @GIT_SHA1@"; >> git_describe(GIT_REFSPEC --all --dirty=-dirty) > > jakie informacje są w GIT_REFSPEC ? $ cat gitversion.cpp const char * g_GIT_SHA1 __attribute__((used)) = "heads/dev-dirty 8e6c2d8a8d1e6cb19ef4552d25c6c14dd5465263"; B.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads