我说我的电脑上有一个程序 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 Generator
还是COMMAND ${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_FOUND
并GENERATOR_EXECUTABLE
在您的问题中,find_program
调用都没有隐式介绍这些内容。
程序中的第二个错误是使用上的DEPENDS
选项add_custom_command
。DEPENDS
用于在构建时对目标间的依赖关系进行建模,而不用于操纵CMakeLists中的控制流。例如,其他定制命令可以出现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
)
PS:您问过为什么问题中的代码示例格式不正确。您已正确缩进了所有内容,但在普通文本和代码段之间需要附加的换行符。我相应地编辑了您的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句