cmake_minimum_required(VERSION 3.0...3.31) project(pom) if (MSVC) add_compile_options(/W4) else() add_compile_options(-Wall -Wextra -Wpedantic -Wshadow) endif() add_library(pom STATIC pom.c) add_library(pom-shared SHARED pom.c) set_target_properties(pom-shared PROPERTIES OUTPUT_NAME pom) # Tests add_executable(tests tests/errors.c tests/location.c tests/parsing.c tests/interpretation.c tests/main.c) target_include_directories(tests PRIVATE .) target_link_libraries(tests pom) # Examples add_executable(example_read_conf examples/read_conf.c) target_include_directories(example_read_conf PRIVATE .) target_link_libraries(example_read_conf pom) add_executable(example_custom_alloc examples/custom_alloc.c) target_include_directories(example_custom_alloc PRIVATE .) target_link_libraries(example_custom_alloc pom) add_executable(example_all_functions examples/all_functions.c) target_include_directories(example_all_functions PRIVATE .) target_link_libraries(example_all_functions pom) # Installation install(TARGETS pom pom-shared DESTINATION lib) install(FILES pom.h DESTINATION include) if (BUILD_CXX) # C++ library add_library(pom++ STATIC cpp/pom.cpp) add_library(pom++-shared SHARED cpp/pom.cpp) set_target_properties(pom++-shared PROPERTIES OUTPUT_NAME pom++) target_include_directories(pom++ PRIVATE .) target_include_directories(pom++-shared PRIVATE .) target_link_libraries(pom++ PRIVATE pom) target_link_libraries(pom++-shared PRIVATE pom-shared) # C++ Examples add_executable(example++_read_conf cpp/examples/read_conf.cpp) target_include_directories(example++_read_conf PRIVATE cpp) target_link_libraries(example++_read_conf pom++) endif()