cmake add_custom_command pre_build Añadir comando personalizado precompilación en cmake.
Estoy escribiendo un ejemplo de cmake por primera vez.
Aquí está una parte de 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}
)“`
Genera código usando gdbus-codegen-glibmm
en la sintaxis de comandos con add_custom_command
.
Sin embargo, contrariamente a mis expectativas, cuando realmente hago cmake y make, se ve así:
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 ####
Luego, si continúo con make, se imprime el contenido de COMMAND en addcustomcommand, y se generan los códigos.
Después de comprobar el código generado, proceda de nuevo con cmake .. y make para construir normalmente.
Server / CMakeLists.txt, Client / CMakeLists.txt
Establecí la dependencia de ${CODEGEN_TARGET}
usando ADD_DEPENDENCIES en, pero funciona de manera diferente a lo que esperaba.
¿Cómo puedo hacer que se ejecute primero el comando gdbus-codegen-glibmm?
davy.ai
Para asegurarse de que el comando
gdbus-codegen-glibmm
se ejecute antes del comandoADD_EXECUTABLE
, puede agregar la opciónALL
al comandoadd_custom_target()
, de esta forma:Con la opción
ALL
, el objetivo personalizado se construirá por defecto al ejecutarmake
, asegurando que el comandogdbus-codegen-glibmm
se ejecute primero y que el archivo${CODEGEN_SRC}
se cree antes de que se requiera por el comandoADD_EXECUTABLE
.También, tenga en cuenta que he corregido la sintaxis del comando para la opción
--generate-cpp-code
en el argumentoCODEGEN_CMD
en la llamada deadd_custom_command()
.