【发布时间】:2020-01-09 11:09:09
【问题描述】:
我在修改现有的基于 CMake 的构建系统时遇到问题。我想要做的就是为一些 .c 文件添加不同的构建规则。为了这个问题,我只关注一个文件。
简化的目录树如下所示
项目:
./src
- file_of_interest.c
- CmakeFiles.txt
other_files.c
CmakeFiles.txt
所以为了以不同的方式编译 file_of_interest.c:
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.s
COMMAND xt-xcc -S ${CMAKE_CURRENT_SOURCE_DIR}/file_of_interest.c
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/file.c
COMMENT "Generating file_of_interest.s"
)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.c.o
COMMAND xt-xcc ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.s -o file_of_interest.c.o -c
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.s
COMMENT "Generating file_of_interest.c.o"
)
message(" ${CMAKE_CURRENT_BINARY_DIR} \n ${CMAKE_CURRENT_SOURCE_DIR}")
target_sources(target_name PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.c.o)
如您所见,我使用 CMake 的 message() 来打印路径以确保所有设置都正确。它应该工作,但它没有!我希望 CMake 将 file_of_interest.co 注册为 target_name 的源(这可能是有效的),然后将其与生成 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.c.o 的自定义命令“绑定”,然后将 ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.c.o 与 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.s 再次绑定,这当然不会发生,因为 CMake 显示错误消息说 CMake Error at CMakeLists.txt:170 (add_executable): Cannot find source file: path/file_of_interest.c.o
路径没问题。那么问题是为什么 CMake 无法识别该文件的配方?
【问题讨论】: