gpt4 book ai didi

gcc - Cmake 无法将自定义命令识别为有效源

转载 作者:行者123 更新时间:2023-12-05 02:11:15 33 4
gpt4 key购买 nike

我在修改现有的基于 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.c.o 注册为 target_name 的来源(这可能有效),然后将其与生成 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.c.o 的自定义命令“绑定(bind)”,然后到再次将 ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.c.o 与 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/file_of_interest.s 联系起来,这肯定不会发生,因为 CMake 显示错误消息说 CMakeLists.txt:170 (add_executable) 处的 CMake 错误:找不到源文件:path/file_of_interest.c.o

路径没问题。所以问题是为什么 CMake 无法识别该文件的配方?

最佳答案

您似乎在顶级 CMakeLists.txt 中创建了一个可执行文件(调用add_executable),但是add_custom_command子目录 (src/CMakeLists.txt) 调用。

这不起作用:当 CMake 处理 add_executable 并搜索生成其源代码的命令时,它只会看到在相同中创建的 add_custom_commands > CMakeLists.txt

来自 add_custom_command documentation :

A target created in the same directory (CMakeLists.txt file) that specifies any output of the custom command as a source file is given a rule to generate the file using the command at build time.

从与 add_custom_command 相同的目录调用 target_sources 是无关的:target 是由 add_executable 创建的> 命令,target_sources 只是修改它的属性。

关于gcc - Cmake 无法将自定义命令识别为有效源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57824263/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com