gpt4 book ai didi

cmake - 使用 CMake 的 ADD_CUSTOM_COMMAND 进行预编译处理

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

我的项目由许多组件组成。每一个都依赖于一个或多个 *.hpp*.lcm 生成的文件使用外部工具。我希望能够指定一个列表,其中 *.lcm每个组件都需要文件,并在需要时让 CMake 自动进行编译,也许使用一个漂亮的小宏指定:

REQUIRED_LCMS (the_component x.lcm z.lcm)

用于编译 *.lcm ,我认为以下应该有效:
ADD_CUSTOM_COMMAND (OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/${lcm_basename}.hpp
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${lcm}
COMMAND "lcm-gen"
ARGS "--lazy --cpp ${CMAKE_CURRENT_SOURCE_DIR}/${lcm}"
COMMENT " ${lcm} -> ${lcm_basename}.hpp")

...但我不确定 REQUIRED_LCMS 中应该包含什么. ADD_CUSTOM_COMMAND 和一个 ADD_CUSTOM_TARGET ?

最佳答案

通过执行以下操作,我设法在没有细粒度(即 per-lcm 文件依赖项)的情况下使其正常工作:

SET (LCM_MESSAGES x.lcm
y.lcm
z.lcm)

SET (LCM_COMPILED_MESSAGES)
FOREACH (_file ${LCM_MESSAGES})

GET_FILENAME_COMPONENT (_filewe ${_file} NAME_WE)
STRING (TOUPPER ${_filewe} _FILEWE)
SET (_filehpp ${_filewe}.hpp)
SET (_filehpp_output ${CMAKE_CURRENT_BINARY_DIR}/${_filehpp})

ADD_CUSTOM_COMMAND (OUTPUT ${_filehpp_output}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_file}
COMMAND lcm-gen
ARGS --lazy --cpp ${CMAKE_CURRENT_SOURCE_DIR}/${_file})

LIST (APPEND LCM_COMPILED_MESSAGES ${_filehpp_output})

ENDFOREACH ()

ADD_CUSTOM_TARGET (LCM_MESSAGES DEPENDS ${LCM_COMPILED_MESSAGES})

...然后在每个组件的 CMakeLists.txt 中:
ADD_DEPENDENCIES (the_component LCM_MESSAGES)

关于cmake - 使用 CMake 的 ADD_CUSTOM_COMMAND 进行预编译处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8109238/

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