🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

9 total messages Started by Borneq Tue, 30 Jan 2018 21:24
Automatyczna informacja o wersji
#309638
Author: Borneq
Date: Tue, 30 Jan 2018 21:24
4 lines
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
#309639
Author: Adam Wysocki
Date: Wed, 31 Jan 2018 12:58
20 lines
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
#309640
Author: Borneq
Date: Wed, 31 Jan 2018 13:18
29 lines
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
#309641
Author: Bartłomiej Golenko
Date: Thu, 01 Feb 2018 16:17
20 lines
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
#309642
Author: Borneq
Date: Fri, 02 Feb 2018 22:26
5 lines
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
#309644
Author: Marcin Konarski
Date: Sun, 04 Feb 2018 18:27
35 lines
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
#309645
Author: Borneq
Date: Sun, 04 Feb 2018 19:41
5 lines
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
#309646
Author: Marcin Konarski
Date: Sun, 04 Feb 2018 20:21
18 lines
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
#309643
Author: Bartłomiej Golenko
Date: Tue, 06 Feb 2018 21:39
12 lines
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