# # Copyright OpenEmbedded Contributors # # SPDX-License-Identifier: MIT # cmake_minimum_required(VERSION 3.22) project(cmake-example VERSION 1.0.0 LANGUAGES CXX ) option(BUILD_SHARED_LIBS "Build using shared libraries" ON) option(FAILING_TEST "Compile a failing unit test to test the test infrastructure" OFF) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED On) set(CMAKE_CXX_EXTENSIONS Off) include(GNUInstallDirs) # Linking a small library makes the example more useful for testing. find_package(json-c) # A simple library linking json-c library found by pkgconfig add_library(cmake-example-lib cpp-example-lib.cpp cpp-example-lib.hpp) set_target_properties(cmake-example-lib PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) target_link_libraries(cmake-example-lib PRIVATE json-c::json-c) install(TARGETS cmake-example-lib INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) # A simple executable linking the library add_executable(cmake-example cpp-example.cpp) target_link_libraries(cmake-example PRIVATE cmake-example-lib) install(TARGETS cmake-example RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) # A simple test executable for testing the library add_executable(test-cmake-example test-cpp-example.cpp) target_link_libraries(test-cmake-example PRIVATE cmake-example-lib) if (FAILING_TEST) target_compile_definitions(test-cmake-example PRIVATE FAIL_COMPARISON_STR="foo") endif(FAILING_TEST) install(TARGETS test-cmake-example RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) include(CTest) add_test(NAME test-cmake-example COMMAND test-cmake-example)