PlantUMLの図をビルドプロセスの一部としてPNGに変換する簡単なCMake関数を提供しようとしています。考え方は、.uml
のファイルが、ビルドプロセスの一部としてPNGにレンダリングしたいPlantUML図を含んでいることです。私はadd_library()
と同様の機能を持っていたいと思います。 al。は、イメージファイルがソースファイルよりも古いダイアグラムをレンダリングします。 add_custom_command()
を使用して新しいコマンドラインツール用のCMakeラッパー
、私は次のスニペットを思い付いた:
#
# 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()
そして私は、この関数を呼び出します。
foo.uml
はPlantUML図を含むファイルです
add_diagram(foo ${CMAKE_CURRENT_SOURCE_DIR}/foo.uml)
。非常に基本的なレベルでは、手動で構築できる名前付きトップレベルのターゲットを作成するという点で「機能します」(例えばmake foo
、nmake foo
、jom foo
などを使用)。
このターゲットをデフォルトのターゲット(all?)に追加すると、これは残りのライブラリと実行ファイルとともに自動的に構築されます。 CMake documentationから
ニースが見つかりました!私はそれを試して、それがどのように行くのかを教えてあげます。 –
ありがとう、私がしなければならなかったのは、 'add_custom_target()'呼び出しに 'ALL'を追加することでした。全てが魅力的です! –
ビルドを実行しているOSにplantumlがインストールされていない場合はどうしますか? – AlexTheo