diff --git a/CMakeLists.txt b/CMakeLists.txt index 03f48ad..7de7efb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,14 +1,18 @@ cmake_minimum_required(VERSION 3.10) project(curtle VERSION 0.1.1 LANGUAGES C) -add_library(curtle - src/vector.c -) +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED True) + +add_library(curtle STATIC src/vector.c) target_include_directories(curtle PUBLIC - $ - $ + $ + $ ) find_library(MATH_LIB m) @@ -18,17 +22,35 @@ endif () install(TARGETS curtle EXPORT curtleTargets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) -install(DIRECTORY include/ DESTINATION include) +install(FILES include/curtle/curtle.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -add_subdirectory(libs/unity) +install(EXPORT curtleTargets + FILE curtleTargets.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/curtle +) + +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/curtleConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) + +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/curtleConfig.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/curtle +) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/curtleConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/curtleConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/curtle +) enable_testing() - -add_executable(test_vector tests/test_vector.c) -target_link_libraries(test_vector PRIVATE curtle Unity) - -add_test(NAME vector_test COMMAND test_vector) \ No newline at end of file +add_subdirectory(tests) \ No newline at end of file diff --git a/Config.cmake.in b/Config.cmake.in new file mode 100644 index 0000000..8d644fd --- /dev/null +++ b/Config.cmake.in @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/curtleTargets.cmake") + +check_required_components(curtle) \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..73d1caa --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.10) + +add_subdirectory(unity) + +add_executable(test_vector test_vector.c) +target_link_libraries(test_vector PRIVATE curtle Unity) + +add_test(NAME vector_test COMMAND test_vector) \ No newline at end of file diff --git a/libs/unity/CMakeLists.txt b/tests/unity/CMakeLists.txt similarity index 100% rename from libs/unity/CMakeLists.txt rename to tests/unity/CMakeLists.txt diff --git a/libs/unity/unity.c b/tests/unity/unity.c similarity index 100% rename from libs/unity/unity.c rename to tests/unity/unity.c diff --git a/libs/unity/unity.h b/tests/unity/unity.h similarity index 100% rename from libs/unity/unity.h rename to tests/unity/unity.h diff --git a/libs/unity/unity_internals.h b/tests/unity/unity_internals.h similarity index 100% rename from libs/unity/unity_internals.h rename to tests/unity/unity_internals.h