gpt4 book ai didi

cmake - 在自定义命令中调用找到的可执行文件的正确方法?

转载 作者:行者123 更新时间:2023-12-04 10:00:40 25 4
gpt4 key购买 nike

我的电脑上有一个程序,比方说 C:/Tools/generate_v23_debug.exe
我有一个 FindGenerate.cmake 文件,它允许 CMake 找到可执行文件的确切路径。

所以在我的 CMake 代码中,我这样做:

find_program(Generate)
if (NOT Generate_FOUND)
message(FATAL_ERROR "Generator not found!")

所以 CMake 找到了可执行文件。现在我想在自定义命令语句中调用这个程序。我应该使用 COMMAND GeneratorCOMMAND ${GENERATOR_EXECUTABLE} ?这两个会做同样的事情吗?一个比另一个更受欢迎吗? name_EXECUTABLE 是 CMake 将定义的变量(它不在 FindGenerate.cmake 文件中),还是特定于我正在查看的其他人的示例代码?威尔 COMMAND Generator扩展到正确的路径?
add_custom_command(
OUTPUT blahblah.txt
COMMAND Generator inputfile1.log
DEPENDS Generator
)

最佳答案

find_program 将其结果存储到作为第一个参数给出的变量中。您可以通过插入一些调试输出来验证这一点:

find_program(GENERATOR Generate)
message(${GENERATOR})

请注意 find_program不会设置除此之外的任何其他变量。你特别提到 Generate_FOUNDGENERATOR_EXECUTABLE在你的问题中,这些都没有被 find_program 隐式引入称呼。

程序中的第二个错误是使用了 DEPENDS add_custom_command 上的选项. DEPENDS用于在构建时对目标间依赖项进行建模,而不是操作 CMakeLists.txt 中的控制流。例如,额外的自定义命令可以 DEPEND在命令的输出( blahblah.txt )上,但自定义命令不能 DEPEND上一次查找操作的结果。

一个工作示例可能如下所示:
find_program(GENERATOR Generate)
if(NOT GENERATOR)
message(FATAL_ERROR "Generator not found!")
endif()

add_custom_command(
OUTPUT blahblah.txt
COMMAND ${GENERATOR} inputfile1.log
)

P.S.:你问为什么你的问题中的代码示例格式不正确。您正确地缩进了所有内容,但是您需要在普通文本和代码段落之间添加一个换行符。我相应地编辑了您的问题。

关于cmake - 在自定义命令中调用找到的可执行文件的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578034/

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