Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: fortran1986 18. 09. 2021, 20:48:35
-
Ahojte, zapol som si farby vo výstupe z buildovania / linkovania, keďže ten štandartný výpis bez farieb je trošku neprehľadný a trvá mi chvíľku, kým sa v tom zorientujem (totiž kompilovanie pre vačšinu compilerov spúšťam priamo cez konzolu). Pre GCC som to zapol takto:
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color")
Lenže compilerov mám niekolko (Clang a GCC v linuxe) a (vo Windowse mám dokonca 2 CLangy, 3x GCC a k tomu niekoľko verzií MSVC a ešte nvidiácky NVCC). A potreboval by som ten farebný výpis zapnúť podľa použitého compilera, správnym parametrom. Ide mi len o CLANG a GCC, (MSVC nepotrebujem nakoľko ho nekompilujem cez konzolu, a vo Visualku je ten zoznam chýb, celkom prehľadný. A NVCC je len na Cuda. Takže v hre sú len GCC a CLANG. Lenže CLang používa trochu iný parameter, ako GCC... Tak som to riešil if-om:
if (CMAKE_GENERATOR STREQUAL "Ninja")
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics")
endif ()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color")
endif ()
endif ()
Akurát CMAKE_CXX_COMPILER_ID obsahuje prázdny string. Myslím, že je to preto, že enviroment variables CC a CXX nemám v systéme zadefinované. Mám to takto schválne, kôli tomu, že mám v systéme veľa compilerov a keby som tie variables vyplnil musel by som to neustále prepisovať. Takto mi to deteguje automaticky podľa toho či použijem ninja, make, alebo generujem solutiony pre visualko a keď chcem iný compiler ako defaultný, tak ho zadám ako konzolový parameter. Existuje ešte nejaký spôsob ako v CMAKE zistiť verziu compilera, aj bez toho aby som mal vyplnené CC a CXX variables? Skúšal som aj "boolovské" CMAKE_COMPILER_IS_GNUCXX, ale tiež som tam nemal hodnotu.
-
A co tak tie env premenne docasne nastavit na potrebne hodnoty, napr cez:
https://cmake.org/cmake/help/v3.7/variable/ENV.html
A po kompilacii (uspesnej ci neuspesnej tam treba mat krok na upratanie) ich nastavit naspat na prazdne
-
Otestuj si primo ten flag, ktery potrebujes: https://cmake.org/cmake/help/latest/module/CheckCXXCompilerFlag.html
Jeste existuje CMAKE_CXX_SIMULATE_ID, mozna ti pomuze...
Ja jsem ninju treba prestal pouzivat, prijde mi ze s make se cmake integruje lip - jsou i barvy, i absolutni cesty ve vystupu...