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 .