From 3a8e919ad14536c6e98d742708f66131d46ee252 Mon Sep 17 00:00:00 2001 From: killua Date: Mon, 16 Mar 2026 18:43:40 +0400 Subject: [PATCH] chore: set up library compilation --- CMakeLists.txt | 51 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a1cf353..d8b6ed5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,21 +1,54 @@ cmake_minimum_required(VERSION 3.15) -project(argument_parser) +project(argument_parser VERSION 1.0) set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_Release ${CMAKE_CURRENT_SOURCE_DIR}/bin/release) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_Debug ${CMAKE_CURRENT_SOURCE_DIR}/bin/debug) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -include_directories(src/headers) -include_directories(src/headers/parser) -include_directories(src/headers/conventions) -include_directories(src/headers/conventions/implementations) -include_directories(src/headers/parser/platform_headers) -include_directories(src/headers/parser/parsing_traits) - file(GLOB_RECURSE SRC_FILES "src/source/*.cpp" "src/source/**/*.cpp" "src/source/**/**/*.cpp") -add_executable(test src/main.cpp ${SRC_FILES}) \ No newline at end of file +add_library(argument_parser ${SRC_FILES}) + +include(GNUInstallDirs) + +target_include_directories(argument_parser PUBLIC + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ +) + +install(TARGETS argument_parser + EXPORT argument_parserTargets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + +install(DIRECTORY src/headers/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + +install(EXPORT argument_parserTargets + FILE argument_parserTargets.cmake + NAMESPACE argument_parser:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/argument_parser +) + +add_executable(test src/main.cpp) +target_link_libraries(test PRIVATE argument_parser) \ No newline at end of file