cmake add_custom_command pre_build
cmake add_custom_command pre_build
第一次写cmake例子
这是CMakeFiles.txt的一部分:
add_custom_command(
OUTPUT ${CODEGEN_SRC}
PRE_BUILD
COMMAND ${CODEGEN_CMD} ${SERVICE_XML} --generate-cpp- code=/home/hello/include/gen/testGenCode
COMMENT "Generate gdbus code"
)
add_custom_target(${CODEGEN_TARGET}
DEPENDS ${CODEGEN_SRC}
)
在使用 add_custom_command
的命令语法中使用 gdbus-codegen-glibmm
生成代码。
然而,出乎我意料的是,当我真正进行cmake和make时,它看起来是这样的:
cmake ..
CMake Error at Server/CMakeLists.txt:1 (ADD_EXECUTABLE):
Cannot find source file:
#### generate File ####
CMake Error at Client/CMakeLists.txt:36 (ADD_EXECUTABLE):
Cannot find source file:
#### generate File ####
然后再make,输出add_custom_command中COMMANT的内容,真正生成代码
查看生成的代码后,继续cmake..再次make即可正常构建。
Server/CMakeLists.txt, Client/CMakeLists.txt
我在 中使用 ADD_DEPENDENCIES 设置了 ${CODEGEN_TARGET}
的依赖项,但它的工作方式与我预期的不同。
如何让 gdbus-codegen-glibmm 命令先到 运行?
add_custom_command 将在构建阶段 运行 命令(当 运行ning make 时)。由于它会生成下一个目标所需的文件,如果文件从未生成过,它将失败。
您也可以在 运行ning cmake 时配置文件,除了 add_custom_command() 之外还使用 execute_process()。您还可以使用 configure_file() 为目标创建占位符,然后在 运行ning make.
时使用 gdbus-codegen-glibmm 擦除它。
第一次写cmake例子
这是CMakeFiles.txt的一部分:
add_custom_command(
OUTPUT ${CODEGEN_SRC}
PRE_BUILD
COMMAND ${CODEGEN_CMD} ${SERVICE_XML} --generate-cpp- code=/home/hello/include/gen/testGenCode
COMMENT "Generate gdbus code"
)
add_custom_target(${CODEGEN_TARGET}
DEPENDS ${CODEGEN_SRC}
)
在使用 add_custom_command
的命令语法中使用 gdbus-codegen-glibmm
生成代码。
然而,出乎我意料的是,当我真正进行cmake和make时,它看起来是这样的:
cmake ..
CMake Error at Server/CMakeLists.txt:1 (ADD_EXECUTABLE):
Cannot find source file:
#### generate File ####
CMake Error at Client/CMakeLists.txt:36 (ADD_EXECUTABLE):
Cannot find source file:
#### generate File ####
然后再make,输出add_custom_command中COMMANT的内容,真正生成代码
查看生成的代码后,继续cmake..再次make即可正常构建。
Server/CMakeLists.txt, Client/CMakeLists.txt
我在 中使用 ADD_DEPENDENCIES 设置了 ${CODEGEN_TARGET}
的依赖项,但它的工作方式与我预期的不同。
如何让 gdbus-codegen-glibmm 命令先到 运行?
add_custom_command 将在构建阶段 运行 命令(当 运行ning make 时)。由于它会生成下一个目标所需的文件,如果文件从未生成过,它将失败。
您也可以在 运行ning cmake 时配置文件,除了 add_custom_command() 之外还使用 execute_process()。您还可以使用 configure_file() 为目标创建占位符,然后在 运行ning make.
时使用 gdbus-codegen-glibmm 擦除它。