【发布时间】:2018-12-13 22:20:14
【问题描述】:
我的项目目录结构是用多个 CMakeLists.txts 构建的。
-
根
- CMakeLists.txt
- 源
- main.c
- CMSIS_lib
- calculate.c
- 计算.h
- CMakeLists.txt
-
cmake
- toolchain.cmake
构建
在我的 CMSIS_lib 中,我使用 CMSIS_lib/CMakeList.txt 分别构建我的依赖源文件 calculate.c
和 calculate.h:
set(util_source_files
calculate.c
calculate.h
)
add_library(util ${util_source_files})
target_include_directories(util calculate.h)
在我的根目录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)
问题是我必须告诉我的编译器在我的calculate.h 中添加一个#define GUCCI(在MakeFile 中,我知道有一个标志告诉标题用-DGUCCI 定义)。我想在我的 CMSIS_lib/CMakeList.txt 中将这个标志添加到我的编译器中,因为当第一个 CMSIS_lib/CMakeList.txt 完成构建时,他将跳过我的 #ifndef GUCCI 下的所有内容 @987654329 @,当在根 CMakeLists.txt 中添加 target_link_libraries() 时,我将无法正确定义所有配置。
我正在使用交叉编译器,在我的toolchain.cmake 中,我使用命令SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_DEFINITIONS GUCCI}") 定义编译器标志,但这为时已晚,因为这只有我的根 CMakeLists.txt 看到,而不是我的副主管 CMakeLists .txt。
【问题讨论】:
标签: cmake