gpt4 book ai didi

用于新命令行工具的 CMake 包装器

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

我正在尝试提供一个简单的 CMake 函数来呈现 PlantUML将图表转换为 PNG 作为我构建过程的一部分。这个想法是我有一堆 .uml包含 PlantUML 图的文件,作为构建过程的一部分,我希望将这些图呈现为 PNG。我想要一个类似于 add_library() 的功能等。阿尔。渲染图像文件比源文件旧的任何图表。

使用 add_custom_command() ,我想出了以下片段:

#
# Create top-level target that renders a PlantUML diagram to a PNG image.
#
function(add_diagram target source)

# Program used to render the diagram.
set(plantuml java -jar ${PLANTUML_JARFILE})

# Diagram source file basename used to create output file name.
get_filename_component(output ${source} NAME_WE)

# Render the diagram and write an "${output}.png"
# file in the current binary folder.
add_custom_command(
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/${output}.png
COMMAND
${plantuml} -o ${CMAKE_CURRENT_BINARY_DIR} -tpng ${source}
MAIN_DEPENDENCY
${source}
COMMENT
"Rendering diagram '${output}'."
)

# Top-level target to build the output file.
add_custom_target(${target}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${output}.png)

endfunction()

我调用这个函数为:
add_diagram(foo ${CMAKE_CURRENT_SOURCE_DIR}/foo.uml)

哪里 foo.uml是一个包含 PlantUML 图的文件。在非常基本的层面上,这“有效”,因为它创建了一个我可以手动构建的命名顶级目标(例如使用 make foonmake foojom foo 等)。

如何将此目标添加到默认目标(全部?),以便使用其余的库和可执行文件自动构建?

最佳答案

来自 CMake documentation :

add_custom_target: Add a target with no output so it will always be built.

If the ALL option is specified it indicates that this target should be added to the default build target so that it will be run every time.

Dependencies listed with the DEPENDS argument may reference files and outputs of custom commands created with add_custom_command() in the same directory (CMakeLists.txt file).


如果您使用的是 Visual Studio,唯一的缺点是它会为每个目标创建一个新项目。

关于用于新命令行工具的 CMake 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8689784/

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