Mastering Cmake Pdf ((link)) -
set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) set(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabihf) Usage: cmake -DCMAKE_TOOLCHAIN_FILE=toolchain_arm.cmake .. Allow other projects to find your library via find_package :
add_custom_command( OUTPUT $CMAKE_CURRENT_BINARY_DIR/version.h COMMAND $CMAKE_COMMAND -DVERSION=$PROJECT_VERSION -P write_version.cmake DEPENDS write_version.cmake COMMENT "Generating version.h" ) add_custom_target(generate_version DEPENDS $CMAKE_CURRENT_BINARY_DIR/version.h) add_dependencies(my_app generate_version) toolchain_arm.cmake : 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 : not during CMake configuration.
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
# Install targets install(TARGETS my_lib EXPORT MyProjectTargets LIBRARY DESTINATION lib ARCHIVE DESTINATION lib INCLUDES DESTINATION include ) install(DIRECTORY include/ DESTINATION include) install(EXPORT MyProjectTargets FILE MyProjectTargets.cmake NAMESPACE MyProject:: DESTINATION lib/cmake/MyProject ) Write config version file include(CMakePackageConfigHelpers) write_basic_package_version_file( "$CMAKE_CURRENT_BINARY_DIR/MyProjectConfigVersion.cmake" VERSION $PROJECT_VERSION COMPATIBILITY SameMajorVersion )
: