Dependency graph(CMake)

Dependency graph(CMake)

Content #

cmake_minimum_required(VERSION 3.19.2)
project(BankApp CXX)

add_executable(terminal_app terminal_app.cpp)
add_executable(gui_app gui_app.cpp)

target_link_libraries(terminal_app calculations)
target_link_libraries(gui_app calculations drawing)

add_library(calculations calculations.cpp)
add_library(drawing drawing.cpp)
    add_custom_target(checksum ALL
    COMMAND sh -c "cksum terminal_app>terminal.ck"
    COMMAND sh -c "cksum gui_app>gui.ck"
    BYPRODUCTS terminal.ck gui.ck
    COMMENT "Checking the sums..."
)

add_dependencies(checksum terminal_app gui_app)

Note: Connect libraries with executable by using target_link_libraries is before actually declaring any of the libraries.

target_link_libraries() is intended to be used with actual libraries and allows you to control property propagation.

add_dependencies() is meant to be used only with top-level targets to set their build order.

Visualizing dependencies:

cmake --graphviz=test.dot .