diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index ad7bddf..55f5fd9 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -1,19 +1,18 @@ name: CMake -on: [push] +on: [push, pull_request] env: - BUILD_TYPE: Release + BUILD_TYPE: Debug jobs: Build_And_Test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - - name: Fetch submodules - run: git submodule update --init --recursive + - uses: actions/checkout@v4 + with: + submodules: recursive - name: Create Build Environment run: cmake -E make_directory ${{runner.workspace}}/build @@ -23,20 +22,12 @@ jobs: - name: Configure CMake shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE + run: cmake -S . -B build -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DLOGGER_BUILD_TESTS=ON -DLOGGER_BUILD_EXAMPLES=ON - name: Build - working-directory: ${{runner.workspace}}/build shell: bash - run: cmake --build . --config $BUILD_TYPE -j + run: cmake --build build --config $BUILD_TYPE -j - name: Run Tests - working-directory: ${{runner.workspace}}/build/out/bin/x64/Release - shell: bash - run: ./Logger.GTest - - - name: Run Examples - working-directory: ${{runner.workspace}}/build/out/bin/x64/Release shell: bash - run: ./Example.Standard \ No newline at end of file + run: ctest --test-dir build --output-on-failure diff --git a/CMakeLists.txt b/CMakeLists.txt index 20235a9..4c6360b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,31 +34,32 @@ project_settings_configure_install_layout( PROJECT_NAME ${PROJECT_NAME} INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} ) -add_subdirectory(src) +add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/src") if(LOGGER_BUILD_TESTS) + include(CTest) enable_testing() - add_subdirectory(tests) + add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/tests") endif() if(LOGGER_BUILD_EXAMPLES) - add_subdirectory(examples) + add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/examples") endif() configure_package_config_file( - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/LoggerConfig.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/LoggerConfig.cmake - INSTALL_DESTINATION ${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/cmake/Logger + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/LoggerConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/LoggerConfig.cmake" + INSTALL_DESTINATION "${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/cmake/Logger" ) write_basic_package_version_file( - ${CMAKE_CURRENT_BINARY_DIR}/LoggerConfigVersion.cmake + "${CMAKE_CURRENT_BINARY_DIR}/LoggerConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion ) if(LOGGER_ENABLE_INSTALL) install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/LoggerConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/LoggerConfigVersion.cmake - DESTINATION ${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/cmake/Logger + "${CMAKE_CURRENT_BINARY_DIR}/LoggerConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/LoggerConfigVersion.cmake" + DESTINATION "${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/cmake/Logger" ) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7fa5b9f..e46b75c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,10 +5,7 @@ file(GLOB_RECURSE headers CONFIGURE_DEPENDS "*.hpp") file(GLOB_RECURSE sources CONFIGURE_DEPENDS "*.cpp") # Create library -add_library(${targetName} STATIC - ${headers} - ${sources} -) +add_library(${targetName} STATIC ${headers} ${sources}) add_library(Logger::Logger ALIAS ${targetName}) target_compile_features(${targetName} PUBLIC cxx_std_20) @@ -33,17 +30,17 @@ target_compile_definitions(${targetName} PUBLIC LOGVERSION_PATCH=0) if(LOGGER_ENABLE_INSTALL) install(TARGETS ${targetName} EXPORT LoggerTargets - ARCHIVE DESTINATION ${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/${LOGGER_INSTALL_ARCH}/${LOGGER_INSTALL_CONFIG} - LIBRARY DESTINATION ${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/${LOGGER_INSTALL_ARCH}/${LOGGER_INSTALL_CONFIG} - RUNTIME DESTINATION ${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_BINDIR}/${LOGGER_INSTALL_ARCH}/${LOGGER_INSTALL_CONFIG} + ARCHIVE DESTINATION "${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/${LOGGER_INSTALL_ARCH}/${LOGGER_INSTALL_CONFIG}" + LIBRARY DESTINATION "${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/${LOGGER_INSTALL_ARCH}/${LOGGER_INSTALL_CONFIG}" + RUNTIME DESTINATION "${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_BINDIR}/${LOGGER_INSTALL_ARCH}/${LOGGER_INSTALL_CONFIG}" ) install( - DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/include/Logger - DESTINATION ${LOGGER_INSTALL_BASE}/include + DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/include/Logger" + DESTINATION "${LOGGER_INSTALL_BASE}/include" ) install(EXPORT LoggerTargets FILE LoggerTargets.cmake NAMESPACE Logger:: - DESTINATION ${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/cmake/Logger + DESTINATION "${LOGGER_INSTALL_BASE}/${CMAKE_INSTALL_LIBDIR}/cmake/Logger" ) endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e8e7e27..a50da6c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,12 +1,12 @@ set(targetName Logger.GTest) add_executable(${targetName} - ${CMAKE_CURRENT_LIST_DIR}/main.gtest.cpp - ${CMAKE_CURRENT_LIST_DIR}/LogEntry.gtest.cpp - ${CMAKE_CURRENT_LIST_DIR}/LogLevel.gtest.cpp - ${CMAKE_CURRENT_LIST_DIR}/LogConfig.gtest.cpp - ${CMAKE_CURRENT_LIST_DIR}/LogOutput.gtest.cpp - ${CMAKE_CURRENT_LIST_DIR}/Profiler.gtest.cpp + "${CMAKE_CURRENT_LIST_DIR}/main.gtest.cpp" + "${CMAKE_CURRENT_LIST_DIR}/LogEntry.gtest.cpp" + "${CMAKE_CURRENT_LIST_DIR}/LogLevel.gtest.cpp" + "${CMAKE_CURRENT_LIST_DIR}/LogConfig.gtest.cpp" + "${CMAKE_CURRENT_LIST_DIR}/LogOutput.gtest.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Profiler.gtest.cpp" ) # Link to required libraries @@ -18,4 +18,6 @@ set_project_warnings(${targetName}) # Which warnings to enable set_compile_options(${targetName}) # Which extra compiler flags to enable set_output_directory(${targetName}) # Set the output directory of the library -add_test(NAME Logger.UnitTests COMMAND ${targetName}) +# Add tests +include(GoogleTest) +gtest_discover_tests(${targetName})