diff --git a/CMakeLists.txt b/CMakeLists.txt index 41770fe..f35bb1c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,47 +1,62 @@ -cmake_minimum_required (VERSION 3.2) +# Support version 3.6 and above, but use policy settings up to 3.14. +# 3.6 is needed because of IMPORTED_TARGET in pkg_check_modules(). +cmake_minimum_required(VERSION 3.6...3.14) +# Ranges are supported from 3.12, set policy to current for < 3.12. +if(${CMAKE_VERSION} VERSION_LESS 3.12) + cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) +endif() + project(remwharead VERSION 0.6.3 - LANGUAGES CXX - ) + LANGUAGES CXX) +# DESCRIPTION was introduced in version 3.9. +if(NOT (${CMAKE_VERSION} VERSION_LESS 3.9)) + set(PROJECT_DESCRIPTION + "Saves URIs of things you want to remember in a database.") +endif() + +include(GNUInstallDirs) + +# All custom build switches. +option(WITH_MAN "Compile and install manpage." YES) +option(WITH_TESTS "Compile tests." NO) +option(WITH_MOZILLA "Build and install wrapper for Mozilla browsers." YES) +option(BUILD_SHARED_LIBS "Build shared libraries." YES) +set(MOZILLA_NMH_DIR "${CMAKE_INSTALL_LIBDIR}/mozilla/native-messaging-hosts" + CACHE PATH "Directory for the Mozilla extension wrapper.") set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -set(CMAKE_CXX_FLAGS_DEBUG - "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra -Wpedantic -ftrapv \ --fsanitize=undefined -g -Og -fno-omit-frame-pointer") - -set(WITH_MAN "YES" CACHE STRING "WITH_MAN defaults to \"YES\"") -set(WITH_TESTS "NO" CACHE STRING "WITH_TESTS defaults to \"NO\"") -set(WITH_MOZILLA "NO" CACHE STRING "WITH_MOZILLA defaults to \"NO\"") - -include(GNUInstallDirs) - -include_directories(${PROJECT_SOURCE_DIR}/src/lib) -Include_directories(${PROJECT_BINARY_DIR}) - -# Write version in header -configure_file( - "${PROJECT_SOURCE_DIR}/src/version.hpp.in" - "${PROJECT_BINARY_DIR}/version.hpp" -) +set(DEBUG_CXXFLAGS + "-Wall" + "-Wextra" + "-Wpedantic" + "-ftrapv" + "-fsanitize=undefined" + "-g" + "-Og" + "-fno-omit-frame-pointer") +set(DEBUG_LDFLAGS + "-fsanitize=undefined") +add_compile_options("$<$:${DEBUG_CXXFLAGS}>") +# add_link_options was introduced in version 3.13. +if(${CMAKE_VERSION} VERSION_LESS 3.13) + set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${DEBUG_LDFLAGS}") +else() + add_link_options("$<$:${DEBUG_LDFLAGS}>") +endif() +add_subdirectory(src) add_subdirectory(src/lib) +add_subdirectory(include) add_subdirectory(src/cli) +add_subdirectory(pkg-config) +add_subdirectory(cmake) if (WITH_MAN) - add_custom_command( - OUTPUT "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.1" - WORKING_DIRECTORY "${PROJECT_BINARY_DIR}" - DEPENDS "${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.1.adoc" - COMMAND ${CMAKE_SOURCE_DIR}/build_manpage.sh - ARGS ${PROJECT_VERSION}) - add_custom_target(man ALL DEPENDS "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.1") - - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.1 - DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) + add_subdirectory(man) endif() if (WITH_MOZILLA) @@ -49,8 +64,6 @@ if (WITH_MOZILLA) endif() if(WITH_TESTS) - include_directories(${PROJECT_SOURCE_DIR}/src/cli) - add_library(${PROJECT_NAME}_testlib SHARED src/cli/parse_options.cpp) add_subdirectory(tests) endif() diff --git a/README.adoc b/README.adoc index d8b3a27..f92bafc 100644 --- a/README.adoc +++ b/README.adoc @@ -20,7 +20,7 @@ image::https://doc.schlomp.space/.remwharead/example_tags.png[Tags view, height= == Usage See -https://schlomp.space/tastytea/remwharead/src/branch/main/remwharead.1.adoc[manpage]. +https://schlomp.space/tastytea/remwharead/src/branch/main/man/remwharead.1.adoc[manpage]. === In your programs @@ -115,7 +115,8 @@ cmake --build . * `-DWITH_TESTS=YES` to compile the tests. * `-DWITH_MOZILLA=YES` to install the wrapper for the Mozilla extension. * `-DMOZILLA_NMH_DIR` lets you set the directory for the Mozilla - extension. The complete path is `${CMAKE_INSTALL_PREFIX}/${MOZILLA_NMH_DIR}`. + extension wrapper. The complete path is + `${CMAKE_INSTALL_PREFIX}/${MOZILLA_NMH_DIR}`. * One of: ** `-DWITH_DEB=YES` if you want to be able to generate a deb-package. ** `-DWITH_RPM=YES` if you want to be able to generate an rpm-package. diff --git a/browser-plugins/webextension/native-wrapper/CMakeLists.txt b/browser-plugins/webextension/native-wrapper/CMakeLists.txt index 4186b55..7896ae9 100644 --- a/browser-plugins/webextension/native-wrapper/CMakeLists.txt +++ b/browser-plugins/webextension/native-wrapper/CMakeLists.txt @@ -1,22 +1,13 @@ -set(MOZILLA_NMH_DIR - "${CMAKE_INSTALL_LIBDIR}/mozilla/native-messaging-hosts" CACHE STRING "") -set(INSTALL_MOZILLA_NMH_DIR - "${CMAKE_INSTALL_PREFIX}/${MOZILLA_NMH_DIR}") +set(INSTALL_MOZILLA_NMH_DIR "${CMAKE_INSTALL_PREFIX}/${MOZILLA_NMH_DIR}") add_executable(${PROJECT_NAME}_wrapper ${PROJECT_NAME}_wrapper.cpp) -target_link_libraries(${PROJECT_NAME}_wrapper stdc++fs) + +target_link_libraries(${PROJECT_NAME}_wrapper PRIVATE stdc++fs) + install(TARGETS ${PROJECT_NAME}_wrapper DESTINATION ${MOZILLA_NMH_DIR}) -add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.json" - WORKING_DIRECTORY - "${CMAKE_SOURCE_DIR}/browser-plugins/webextension/native-wrapper" - DEPENDS "${PROJECT_NAME}.json" - COMMAND "./replace_nmh_dir.sh" - ARGS "${INSTALL_MOZILLA_NMH_DIR}" - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.json") -add_custom_target(nmh_replace ALL - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.json") -install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.json +configure_file("${PROJECT_NAME}.json.in" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.json" @ONLY) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.json DESTINATION ${MOZILLA_NMH_DIR}) diff --git a/browser-plugins/webextension/native-wrapper/remwharead.json b/browser-plugins/webextension/native-wrapper/remwharead.json deleted file mode 100644 index 21cc13b..0000000 --- a/browser-plugins/webextension/native-wrapper/remwharead.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "remwharead", - "description": "Saves URIs of things you want to remember in a database.", - "path": "/usr/lib/mozilla/native-messaging-hosts/remwharead_wrapper", - "type": "stdio", - "allowed_extensions": [ "remwharead@tastytea.de" ] -} diff --git a/browser-plugins/webextension/native-wrapper/remwharead.json.in b/browser-plugins/webextension/native-wrapper/remwharead.json.in new file mode 100644 index 0000000..de2925f --- /dev/null +++ b/browser-plugins/webextension/native-wrapper/remwharead.json.in @@ -0,0 +1,7 @@ +{ + "name": "remwharead", + "description": "@PROJECT_DESCRIPTION@", + "path": "@INSTALL_MOZILLA_NMH_DIR@", + "type": "stdio", + "allowed_extensions": [ "remwharead@tastytea.de" ] +} diff --git a/browser-plugins/webextension/native-wrapper/replace_nmh_dir.sh b/browser-plugins/webextension/native-wrapper/replace_nmh_dir.sh deleted file mode 100755 index d220b10..0000000 --- a/browser-plugins/webextension/native-wrapper/replace_nmh_dir.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Replace directory in remwharead.json - -sed 's|/usr/lib/mozilla/native-messaging-hosts|'"${1}"'|' remwharead.json > "${2}" - diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt new file mode 100644 index 0000000..0a62f8c --- /dev/null +++ b/cmake/CMakeLists.txt @@ -0,0 +1,19 @@ +include(CMakePackageConfigHelpers) +include(GNUInstallDirs) + +write_basic_package_version_file("${PROJECT_NAME}ConfigVersion.cmake" + VERSION ${PACKAGE_VERSION} + COMPATIBILITY ExactVersion) # NOTE: Set to SameMajorVersion when stable. + +install(EXPORT ${PROJECT_NAME}Targets + FILE "${PROJECT_NAME}Targets.cmake" + NAMESPACE "${PROJECT_NAME}::" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + +configure_file("${PROJECT_NAME}Config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" @ONLY) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") diff --git a/cmake/remwhareadConfig.cmake.in b/cmake/remwhareadConfig.cmake.in new file mode 100644 index 0000000..aa2c259 --- /dev/null +++ b/cmake/remwhareadConfig.cmake.in @@ -0,0 +1,15 @@ +include(CMakeFindDependencyMacro) +include(GNUInstallDirs) + +find_dependency(PkgConfig REQUIRED) +pkg_check_modules(libconfig++ REQUIRED IMPORTED_TARGET libconfig++) +pkg_check_modules(curlpp REQUIRED IMPORTED_TARGET curlpp) + +find_file(vsqlitepp NAMES "sqlite/connection.hpp" + PATHS ${CMAKE_INSTALL_INCLUDEDIR}) + +if("${vsqlitepp}" STREQUAL "vsqlitepp-NOTFOUND") + message(FATAL_ERROR "Could not find vsqlite++.") +endif() + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt new file mode 100644 index 0000000..c0df415 --- /dev/null +++ b/include/CMakeLists.txt @@ -0,0 +1,5 @@ +include(GNUInstallDirs) + +install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}" + FILES_MATCHING PATTERN "*.hpp") diff --git a/src/lib/export/adoc.hpp b/include/export/adoc.hpp similarity index 100% rename from src/lib/export/adoc.hpp rename to include/export/adoc.hpp diff --git a/src/lib/export/bookmarks.hpp b/include/export/bookmarks.hpp similarity index 100% rename from src/lib/export/bookmarks.hpp rename to include/export/bookmarks.hpp diff --git a/src/lib/export/csv.hpp b/include/export/csv.hpp similarity index 100% rename from src/lib/export/csv.hpp rename to include/export/csv.hpp diff --git a/src/lib/export/export.hpp b/include/export/export.hpp similarity index 100% rename from src/lib/export/export.hpp rename to include/export/export.hpp diff --git a/src/lib/export/simple.hpp b/include/export/simple.hpp similarity index 100% rename from src/lib/export/simple.hpp rename to include/export/simple.hpp diff --git a/src/lib/remwharead.hpp b/include/remwharead.hpp similarity index 100% rename from src/lib/remwharead.hpp rename to include/remwharead.hpp diff --git a/src/lib/search.hpp b/include/search.hpp similarity index 100% rename from src/lib/search.hpp rename to include/search.hpp diff --git a/src/lib/sqlite.hpp b/include/sqlite.hpp similarity index 100% rename from src/lib/sqlite.hpp rename to include/sqlite.hpp diff --git a/src/lib/time.hpp b/include/time.hpp similarity index 100% rename from src/lib/time.hpp rename to include/time.hpp diff --git a/src/lib/types.hpp b/include/types.hpp similarity index 100% rename from src/lib/types.hpp rename to include/types.hpp diff --git a/src/lib/uri.hpp b/include/uri.hpp similarity index 100% rename from src/lib/uri.hpp rename to include/uri.hpp diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt new file mode 100644 index 0000000..fdd941b --- /dev/null +++ b/man/CMakeLists.txt @@ -0,0 +1,13 @@ +include(GNUInstallDirs) + +add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.1" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + DEPENDS "${PROJECT_NAME}.1.adoc" + COMMAND "${PROJECT_SOURCE_DIR}/man/build_manpage.sh" + ARGS "${PROJECT_VERSION}") + +add_custom_target(man ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.1") + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.1 + DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) diff --git a/build_manpage.sh b/man/build_manpage.sh similarity index 92% rename from build_manpage.sh rename to man/build_manpage.sh index aee2631..d3fa1aa 100755 --- a/build_manpage.sh +++ b/man/build_manpage.sh @@ -3,7 +3,7 @@ name="remwharead" if [ -n "${1}" ]; then - dir="$(dirname ${0})" + dir=$(dirname "${0}") version=${1} cp -vf "${dir}/${name}.1.adoc" . sed -Ei "s/(Revision: +)[0-9]+\.[0-9]\.[0-9]/\1${version}/" "${name}.1.adoc" diff --git a/remwharead.1.adoc b/man/remwharead.1.adoc similarity index 100% rename from remwharead.1.adoc rename to man/remwharead.1.adoc diff --git a/pkg-config/CMakeLists.txt b/pkg-config/CMakeLists.txt new file mode 100644 index 0000000..4640f17 --- /dev/null +++ b/pkg-config/CMakeLists.txt @@ -0,0 +1,7 @@ +include(GNUInstallDirs) + +configure_file("${PROJECT_NAME}.pc.in" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" @ONLY) + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") diff --git a/pkg-config/remwharead.pc.in b/pkg-config/remwharead.pc.in new file mode 100644 index 0000000..5b7c6ba --- /dev/null +++ b/pkg-config/remwharead.pc.in @@ -0,0 +1,13 @@ +name=@PROJECT_NAME@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + +Name: ${name} +Description: @PROJECT_DESCRIPTION@ +Version: @PROJECT_VERSION@ +Cflags: -I${includedir} +Requires: curlpp +Libs: -L${libdir} -l${name} -lvsqlitepp -lstdc++fs +Requires.private: libxdg-basedir, icu-uc, icu-i18n diff --git a/remwharead.pc.in b/remwharead.pc.in deleted file mode 100644 index 9ac4e22..0000000 --- a/remwharead.pc.in +++ /dev/null @@ -1,13 +0,0 @@ -name=@PROJECT_NAME@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=${prefix} -libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ -includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ - -Name: ${name} -Description: Saves, archives and retrieves URIs of things you want to remember. -Version: @PROJECT_VERSION@ -Libs: -L${libdir} -l${name} -Cflags: -I${includedir}/${name} -Requires.private: curlpp, sqlite3, libxdg-basedir, icu-uc, icu-i18n -Libs.private: -lvsqlitepp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..9c393ac --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,3 @@ +# Write version in header +configure_file("version.hpp.in" + "${PROJECT_BINARY_DIR}/version.hpp") diff --git a/src/cli/CMakeLists.txt b/src/cli/CMakeLists.txt index 1b543e8..e0e4fd6 100644 --- a/src/cli/CMakeLists.txt +++ b/src/cli/CMakeLists.txt @@ -1,10 +1,17 @@ -include_directories(${PROJECT_SOURCE_DIR}/src/cli) +include(GNUInstallDirs) file(GLOB sources_cli *.cpp) add_executable(${PROJECT_NAME}-cli ${sources_cli}) -target_link_libraries(${PROJECT_NAME}-cli ${PROJECT_NAME}) + set_target_properties(${PROJECT_NAME}-cli PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) -install(TARGETS ${PROJECT_NAME}-cli DESTINATION ${CMAKE_INSTALL_BINDIR}) +target_include_directories(${PROJECT_NAME}-cli + PRIVATE "${PROJECT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") + +target_link_libraries(${PROJECT_NAME}-cli + PRIVATE ${PROJECT_NAME}) + +install(TARGETS ${PROJECT_NAME}-cli + DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index caa21b5..73168c3 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -1,43 +1,32 @@ +include(GNUInstallDirs) + find_package(PkgConfig REQUIRED) -pkg_check_modules(LIBXDG_BASEDIR REQUIRED libxdg-basedir) -# sqlite3 is not a direct dependency, but vsqlite++ has no cmake- or pkg-config -# module. Since it installs in the same directories as sqlite3, I am adding the -# module here to add the include- and link directories below. It is not REQUIRED -# because the sqlite3 in Debian jessie doesn't come with a pkg-config module. -pkg_check_modules(SQLITE3 sqlite3) -pkg_check_modules(CURLPP REQUIRED curlpp) +pkg_check_modules(libxdg-basedir REQUIRED IMPORTED_TARGET libxdg-basedir) +pkg_check_modules(curlpp REQUIRED IMPORTED_TARGET curlpp) find_package(ICU COMPONENTS uc i18n REQUIRED) -include_directories(${LIBXDG_BASEDIR_INCLUDE_DIRS}) -include_directories(${SQLITE3_INCLUDE_DIRS}) -include_directories(${CURLPP_INCLUDE_DIRS}) -include_directories(${ICU_INCLUDE_DIRS}) +file(GLOB_RECURSE sources_lib *.cpp) +file(GLOB_RECURSE headers_lib ../../include/*.hpp) -link_directories(${LIBXDG_BASEDIR_LIBRARY_DIRS}) -link_directories(${SQLITE3_LIBRARY_DIRS}) -link_directories(${CURLPP_LIBRARY_DIRS}) -link_directories(${ICU_LIBRARY_DIRS}) +add_library(${PROJECT_NAME} "${sources_lib}" "${headers_lib}") -file(GLOB sources_lib *.cpp export/*.cpp) -file(GLOB headers_lib *.hpp) -file(GLOB headers_lib_export export/*.hpp) - -add_library(${PROJECT_NAME} SHARED ${sources_lib}) -target_link_libraries(${PROJECT_NAME} ${LIBXDG_BASEDIR_LIBRARIES} - vsqlitepp stdc++fs ${CURLPP_LIBRARIES} ${ICU_LIBRARIES}) set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} - SOVERSION ${${PROJECT_NAME}_VERSION_MAJOR} - ) + SOVERSION ${${PROJECT_NAME}_VERSION_MAJOR}) -install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) -install(FILES ${headers_lib} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}) -install(FILES ${headers_lib_export} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/export) +target_include_directories(${PROJECT_NAME} + PRIVATE + "$" # version.hpp + PUBLIC + "$" + "$") -configure_file("${PROJECT_SOURCE_DIR}/remwharead.pc.in" - "${CMAKE_CURRENT_BINARY_DIR}/remwharead.pc" @ONLY) +target_link_libraries(${PROJECT_NAME} + PRIVATE PkgConfig::libxdg-basedir ICU::uc ICU::i18n + PUBLIC PkgConfig::curlpp vsqlitepp stdc++fs) + +install(TARGETS ${PROJECT_NAME} + EXPORT "${PROJECT_NAME}Targets" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/remwharead.pc" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") diff --git a/src/lib/export/adoc.cpp b/src/lib/export/adoc.cpp index 2703ebf..de7f948 100644 --- a/src/lib/export/adoc.cpp +++ b/src/lib/export/adoc.cpp @@ -23,7 +23,7 @@ #include #include "version.hpp" #include "time.hpp" -#include "adoc.hpp" +#include "export/adoc.hpp" namespace remwharead { diff --git a/src/lib/export/bookmarks.cpp b/src/lib/export/bookmarks.cpp index ab6c373..b3dd63f 100644 --- a/src/lib/export/bookmarks.cpp +++ b/src/lib/export/bookmarks.cpp @@ -17,7 +17,7 @@ #include #include #include "sqlite.hpp" -#include "bookmarks.hpp" +#include "export/bookmarks.hpp" namespace remwharead { diff --git a/src/lib/export/csv.cpp b/src/lib/export/csv.cpp index d9ad06f..81972ff 100644 --- a/src/lib/export/csv.cpp +++ b/src/lib/export/csv.cpp @@ -15,7 +15,7 @@ */ #include "time.hpp" -#include "csv.hpp" +#include "export/csv.hpp" namespace remwharead { diff --git a/src/lib/export/export.cpp b/src/lib/export/export.cpp index 9aa0a48..e2e195c 100644 --- a/src/lib/export/export.cpp +++ b/src/lib/export/export.cpp @@ -15,7 +15,7 @@ */ #include -#include "export.hpp" +#include "export/export.hpp" namespace remwharead { diff --git a/src/lib/export/simple.cpp b/src/lib/export/simple.cpp index d7b1a4f..03c81fa 100644 --- a/src/lib/export/simple.cpp +++ b/src/lib/export/simple.cpp @@ -17,7 +17,7 @@ #include #include "sqlite.hpp" #include "time.hpp" -#include "simple.hpp" +#include "export/simple.hpp" namespace remwharead { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f730478..cf39c92 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,21 +1,29 @@ include(CTest) + +# I'm linking the library into the testlib to get the include directories. +add_library(${PROJECT_NAME}_testlib ../src/cli/parse_options.cpp) +target_include_directories(${PROJECT_NAME}_testlib + PUBLIC "${PROJECT_BINARY_DIR}" "../src/cli") +target_link_libraries(${PROJECT_NAME}_testlib PUBLIC ${PROJECT_NAME}) + file(GLOB sources_tests test_*.cpp) -find_package(Catch2) -if(Catch2_FOUND) # Catch 2.x +find_package(Catch2 CONFIG) +if(Catch2_FOUND) # Catch 2.x include(Catch) add_executable(all_tests main.cpp ${sources_tests}) target_link_libraries(all_tests - Catch2::Catch2 ${PROJECT_NAME} ${PROJECT_NAME}_testlib) + PRIVATE Catch2::Catch2 ${PROJECT_NAME}_testlib) target_include_directories(all_tests PRIVATE "/usr/include/catch2") catch_discover_tests(all_tests EXTRA_ARGS "${EXTRA_TEST_ARGS}") -else() # Catch 1.x +else() # Catch 1.x if(EXISTS "/usr/include/catch.hpp") message(STATUS "Catch 1.x found.") foreach(src ${sources_tests}) get_filename_component(bin ${src} NAME_WE) add_executable(${bin} main.cpp ${src}) - target_link_libraries(${bin} ${PROJECT_NAME} ${PROJECT_NAME}_testlib) + target_link_libraries(${bin} + PRIVATE ${PROJECT_NAME} ${PROJECT_NAME}_testlib) add_test(${bin} ${bin} "${EXTRA_TEST_ARGS}") endforeach() else()