/ / Metody krzyżowej kompilacji tylko zdefiniowane („niektóre”) cele w projekcie CMake - cmake, osadzone, kompilacja krzyżowa, googletest, googlemock

Metody do krzyżowania Kompilacja tylko zdefiniowanych ("niektórych") celów w projekcie CMake - cmake, wbudowane, cross-kompilacja, googletest, googlemock

Do tej pory korzystałem z dobrze udokumentowanej drogikrzyżuj kod kompilacji z cmake, definiując plik Toolchain jak na końcu postu. Chciałbym jednak znaleźć sposób kompilacji krzyżowej nie całego mojego projektu C, C ++, ale tylko niektóre cele. Przykładem zastosowania jest na przykład przeprowadzanie testów jednostkowych za pomocą testu Google dla systemów wbudowanych i koordynowanie wszystkiego z CMAKE. Czy ktoś może podać odniesienie, link lub minimalny przykład, aby rozwiązać ten problem?

To, czego nie chcę robić, to dwukrotne zdefiniowanie celów dla różnych architektur, wolę zdefiniować plik toolchain i jakoś przekazać go do odpowiedniego pliku CMakeLists.txt lub celu.

Oto przykład minimalnego pliku łańcucha narzędzi, ponieważ chciałbym go użyć do globalnej konfiguracji projektu cmake.

SET(CMAKE_SYSTEM_NAME Generic)

SET(CMAKE_C_COMPILER   ..)
SET(CMAKE_CXX_COMPILER ..)
SET(CMAKE_C_COMPILER   C:,,,.exe)
SET(CMAKE_CXX_COMPILER C:,,,.exe)

SET(CMAKE_FIND_ROOT_PATH  .buildghs )

# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
# programs in the host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

Odpowiedzi:

0 dla odpowiedzi № 1

Mam projekt, w którym chcę mieć możliwość wyboru między testem_jednostki i kompilacją krzyżową. Oto moje źródło cmakelist:

if(APP_TYPE STREQUAL "PROJ_UNIT_TEST")
#compiler choice
set( ENV{CC} ${CM_ECLIPSE_HOME}/../../MinGW/bin/gcc.exe)


else()
#CC has to be set before project() that will search for the compiler
#this is deprecated : CMAKE_FORCE_C_COMPILER(arm-none-eabi-gcc GNU)
set( ENV{CC} ${CM_ECLIPSE_HOME}/../../GNU Tools ARM Embedded/6-2016-q4-major/bin/arm-none-eabi-gcc.exe)

Zdajemy APP_TYPE parametr do wyboru między 2 opcjami. Nie używam pliku toolchain, ale pozwalam cmake automatycznie wyszukiwać kompilator w moich zmiennych środowiskowych.

To może nie być najlepsze rozwiązanie, ale działa w moim projekcie