Niedawno zmieniłem kilka projektów z autotools na cmake.cmake - uzyskaj używane flagi linii poleceń "-D"
jedną wspólną rzeczą, którą lubiłem w autotoolach, jest to, że jeśli przejdę do katalogu budowania src. znajduje się plik config.log/config.status - gdzie na górze znajduje się polecenie ./configure --params
- więc łatwo jest ponownie użyć wcześniej używanych flag linii poleceń.
(jak po kompilacji niektóre rzeczy - chcę dodać kolejny --enable-this
- tak skopiować & pastę z config.log/status - i ponownie uruchom ./configure --old-params --enable-this
)
w cmake - mam kilka -D
flagi - jak mogę znaleźć użytą linię poleceń jak w config.log/status - z projektem cmake?
wiem tam jest CMakeCache ... - ale trudno wyodrębnić używane flagi
edit:
wymyśliłem następujące rozwiązanie:
#save commandline to rebuild this :)
set(USED_CMD_LINE "cmake ")
set(MY_CMAKE_FLAGS CMAKE_BUILD_TYPE CMAKE_INSTALL_PREFIX ENABLE_SSL ENABLE_LUA ENABLE_SSH ENABLE_SNMP MYSQL_USER MYSQL_PASS MYSQL_HOST MYSQL_DB FULL_FEATURES USE_COVERAGE)
FOREACH(cmd_line_loop IN ITEMS ${MY_CMAKE_FLAGS})
if(${cmd_line_loop})
STRING(CONCAT USED_CMD_LINE ${USED_CMD_LINE} "-D" ${cmd_line_loop} "=" ${${cmd_line_loop}} " ")
endif()
ENDFOREACH(cmd_line_loop)
STRING(CONCAT USED_CMD_LINE ${USED_CMD_LINE} " .. ")
#store to a file aka "config.status"
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/config.status ${USED_CMD_LINE})
tworzy plik config.status w folderze build - zawierający wszystkie ustawione parametry cmake.
pro:
- wydaje się rozwiązać mój problem
- wydaje się działać na późniejszej cmake wzywa
con:
- w stanie ustawić chmod na
FILE(write
? zmienna MY_CMAKE_FLAGS
zawiera znane flagi - musi być ręcznie aktualizowany jeśli nowa flaga dodaje
pozdrowienia
To jest doskonałe pytanie - który miałem przez kilka lat, ale nie poprosił o StackOverflow. Nie sądzę, że istnieje sposób na uzyskanie zestawu flag -D podczas wywoływania cmake. Poniższa odpowiedź na pytanie, jak wyświetlić dokładne polecenia, które wynikają z wywołania cmake, nie zawiera argumentów użytych w wywołaniu konfiguracji cmake. Prawidłowa odpowiedź jest trudniejsza, niż można by się spodziewać, ponieważ użytkownik może ciągle rekonfigurować katalog budowania cmake'a za pomocą 'cmake -Danotherflag = value.". – Phil
to smutne! w rzeczywistości naprawdę kocham cmake, rozwiązuje jak problemy 3.5mio (nauczyłem się żyć z) z autotools - ale brak uzyskiwania przez użytkownika flag linii poleceń, jest naprawdę zły. –
zobacz moje edytowane pytanie - to alteast dla mnie rozwiązuje mój problem (w sposób nie doskonały tak) –