Mastering Cmake Pdf !free! Instant
project/ ├── CMakeLists.txt (top-level) ├── cmake/ │ └── FindMyCustomLib.cmake ├── src/ │ ├── CMakeLists.txt │ └── app.cpp ├── libs/ │ ├── core/ │ │ ├── CMakeLists.txt │ │ └── core.cpp │ └── utils/ │ ├── CMakeLists.txt │ └── utils.h (header-only) └── tests/ ├── CMakeLists.txt └── test_core.cpp cmake_minimum_required(VERSION 3.20) project(MyProject VERSION 1.0.0 LANGUAGES CXX) Options option(BUILD_TESTS "Build unit tests" ON) option(BUILD_SHARED_LIBS "Build shared libs instead of static" OFF) Global settings set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) Add subdirectories add_subdirectory(libs/core) add_subdirectory(libs/utils) add_subdirectory(src)
if(MyLib_FOUND AND NOT TARGET MyLib::MyLib) add_library(MyLib::MyLib UNKNOWN IMPORTED) set_target_properties(MyLib::MyLib PROPERTIES IMPORTED_LOCATION "$MyLib_LIBRARY" INTERFACE_INCLUDE_DIRECTORIES "$MyLib_INCLUDE_DIR" ) endif() 1. Generator Expressions Evaluated during build system generation, not during CMake configuration. mastering cmake pdf
find_package(OpenCV 4.5 REQUIRED) target_link_libraries(my_app PRIVATE opencv::core opencv::imgproc) # Propagates includes automatically cmake/FindMyLib.cmake : project/ ├── CMakeLists