Моя структура каталогов проекта построена с несколькими CMakeLists.txts.
root
- CMakeLists.txt
- Src
- CMSIS_lib
- вычисления.c
- Подсчет.h
- CMakeLists.txt
cmake
build
В моем CMSIS_lib я создаю отдельно мои исходные файлы зависимостей calculate.c
и calculate.h
с CMSIS_lib / CMakeList.txt :
set(util_source_files
calculate.c
calculate.h
)
add_library(util ${util_source_files})
target_include_directories(util calculate.h)
В моемroot CMakeLists.txt :
cmake_minimum_required(VERSION 3.4)
project(main_projct)
set(TOOLCHAIN_PREFIX /opt/gcc-arm-none-eabi)
set(CMAKE_TOOLCHAIN_FILE cmake/toolchain.cmake)
add_subdirectory(CMSIS_lib)
add_executable(main_projct main.c)
target_link_libraries(main_projct util)
Проблема заключается в том, что я должен сказать своему компилятору добавить #define GUCCI
в мой calculate.h
(В MakeFile я знаю, что есть флаг, чтобы сообщитьзаголовок определить с помощью -DGUCCI
).Я хотел бы добавить этот флаг в мой компилятор в моем CMSIS_lib / CMakeList.txt , потому что, когда первый CMSIS_lib / CMakeList.txt будет завершен, он пропустит все в #ifndef GUCCI
в моем calculate.h
, и при добавлении в корневой CMakeLists.txt с target_link_libraries()
у меня не будет все правильно определяет конфигурацию.
Я использую кросс-компилятор и в моем toolchain.cmake
я использую для определения флагов компилятора с помощью команды SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_DEFINITIONS GUCCI}")
, но это слишком поздно, потому что это видит только мой корневой CMakeLists.txt, а не мой поддиректор CMakeLists.txt.