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.