cmake - CMAKE:如何设置包含给定目标路径和文件名的编译器标志
问题描述
我正在开发一个 CMAKE 构建系统,该系统在 Windows 中使用 Keil ARMCC 工具集交叉编译 ARM CortexM4
我将c编译器标志设置如下
set(CMAKE_C_FLAGS "-c --c99 --cpu=Cortex-M4.fp.sp --apcs=interwork --split_sections")
但是,ARMCC 编译器具有需要输入目标路径和文件名的选项。例如,对于每个c源文件,除了输出目标文件外,我还需要通过添加编译器选项来输出源浏览器信息和源依赖,格式如下:
--omf_browse=my_output_path/the_current_source_file.crf and --depend my_output_path/the_current_source_file.d
如何将上述选项添加到 CMAKE_C_FLAGS?
谢谢
解决方案
简单的方法是COMPILE_OPTIONS
为每个需要的源文件设置属性。
这是测试 CMakeLists.txt
project(TestSourceProp)
set(SOURCE_FILES
main.c
file.c
)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
foreach(SRC_ IN LISTS SOURCE_FILES)
get_filename_component(SRC_BASENAME_ ${SRC_} NAME_WE)
set_source_files_properties(${SRC_} PROPERTIES COMPILE_OPTIONS "--omf_browse=${SRC_BASENAME_}.crf;--depend=${SRC_BASENAME_}.d")
get_source_file_property(SRC_PROP_ ${SRC_} COMPILE_OPTIONS)
message(STATUS "${SRC_}: ${SRC_PROP_}")
endforeach()
输出:
...
-- main.c: --omf_browse=main.crf;--depend=main.d
-- file.c: --omf_browse=file.crf;--depend=file.d
-- Configuring done
生成文件:
CMakeFiles/TestSourceProp.dir/main.c.obj: ../main.c
@$(CMAKE_COMMAND) -E cmake_echo_color ...
gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) --omf_browse=main.crf --depend=main.d -o CMakeFiles/TestSourceProp.dir/main.c.obj -c ...
我认为另一种方法是创建一个自定义CMake-toolchain文件。
推荐阅读
- javascript - 使用没有外部可访问性的 Web 组件创建自定义输入字段
- android - 设置全局文本颜色并保留禁用的按钮颜色
- python - Django req.POST 总是返回 False
- python - 生成具有数百万行的二进制矩阵
- r - R 上 2 个条件的百分位数
- c# - 在 Dockerfile 中公开具有不同名称的环境变量
- c# - VideoLibrary“GetDecryptionFunction 失败”
- android - Unity 游戏的 GooglePlayServices 登录失败
- javascript - 如何在for循环内多次调用具有多个嵌套mysql查询的函数?
- php - pecl 更新:pear.php.net 正在使用不受支持的协议 - 这绝不应该发生