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

Makefile:

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工具链文件。

最新更新