diff --git a/CMakeLists.txt b/CMakeLists.txt index c4444c6668a0389a73e049f1d4491c4ec6f46923..829ce5c3daba4654aa4f391db7139ea7d821868b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,7 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) +# set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) IF (WIN32) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) @@ -55,20 +55,20 @@ ENDIF() ### DEPENDENCY MANAGEMENT with CONAN ########################################### message(STATUS "Build directory ${CMAKE_BINARY_DIR}") -include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) -conan_basic_setup() +# include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +# conan_basic_setup() -# fix grpc - remove unsecure (no-op ssl implementations) -string(REGEX REPLACE "grpc\\+?\\+?_unsecure" "" CONAN_LIBS_GRPC - "${CONAN_LIBS_GRPC}") -string(REGEX REPLACE "grpc\\+?\\+?_unsecure" "" CONAN_PKG_LIBS_GRPC - "${CONAN_PKG_LIBS_GRPC}") -string(REGEX REPLACE "grpc\\+?\\+?_unsecure" "" CONAN_LIBS - "${CONAN_LIBS}") -string(REGEX REPLACE "grpc\\+?\\+?_unsecure" "" CONAN_PKG_LIBS - "${CONAN_PKG_LIBS}") +# # fix grpc - remove unsecure (no-op ssl implementations) +# string(REGEX REPLACE "grpc\\+?\\+?_unsecure" "" CONAN_LIBS_GRPC +# "${CONAN_LIBS_GRPC}") +# string(REGEX REPLACE "grpc\\+?\\+?_unsecure" "" CONAN_PKG_LIBS_GRPC +# "${CONAN_PKG_LIBS_GRPC}") +# string(REGEX REPLACE "grpc\\+?\\+?_unsecure" "" CONAN_LIBS +# "${CONAN_LIBS}") +# string(REGEX REPLACE "grpc\\+?\\+?_unsecure" "" CONAN_PKG_LIBS +# "${CONAN_PKG_LIBS}") -message(STATUS "CONAN_LIBS: ${CONAN_LIBS}") +# message(STATUS "CONAN_LIBS: ${CONAN_LIBS}") ########################################### ### GENERAL SETUP of SOURCES @@ -157,85 +157,102 @@ add_custom_command( ### * ccaosdbcli - A plain C test client. ############################################################################### -if("${CMAKE_BUILD_TYPE}" MATCHES "Debug") - add_library(caosdb_grpc SHARED ${GRPC_GENERATED}) - add_library(caosdb SHARED ${libcaosdb_INCL} ${libcaosdb_SRC}) - target_link_libraries(caosdb caosdb_grpc) - set(LIBCAOSDB caosdb caosdb_grpc) - - target_include_directories(caosdb_grpc PUBLIC - $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> - $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> - - $<INSTALL_INTERFACE:include> - ) - target_include_directories(caosdb_grpc SYSTEM PUBLIC - ${CONAN_INCLUDE_DIRS} - ) -else() - add_library(caosdb - SHARED ${libcaosdb_INCL} ${libcaosdb_SRC} ${GRPC_GENERATED}) - set(LIBCAOSDB caosdb) -endif() -target_link_libraries(caosdb - ${CONAN_LIBS} - stdc++fs -) -target_include_directories(caosdb PUBLIC - $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> - $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> - $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/src> - $<INSTALL_INTERFACE:include> -) -target_include_directories(caosdb SYSTEM PUBLIC - ${CONAN_INCLUDE_DIRS} -) - -add_library(ccaosdb SHARED src/ccaosdb.cpp) -target_link_libraries(ccaosdb - ${CONAN_LIBS} - ${LIBCAOSDB} - stdc++fs -) -target_include_directories(ccaosdb PUBLIC - $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> - $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> - $<INSTALL_INTERFACE:include> -) -target_include_directories(ccaosdb SYSTEM PUBLIC - ${CONAN_INCLUDE_DIRS} -) - +find_package(gRPC) +find_package(protobuf) +find_package(Boost) +find_package(GTest) -add_executable(ccaosdbcli EXCLUDE_FROM_ALL src/ccaosdbcli.c) -target_include_directories(ccaosdbcli PUBLIC - $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> - $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> - $<INSTALL_INTERFACE:include> -) -target_include_directories(ccaosdbcli SYSTEM PUBLIC - ${CONAN_INCLUDE_DIRS} -) - -target_link_libraries(ccaosdbcli - ${CONAN_LIBS} - ${LIBCAOSDB} - ccaosdb -) +add_library(caosdb + SHARED ${libcaosdb_INCL} ${libcaosdb_SRC} ${GRPC_GENERATED}) +set(LIBCAOSDB caosdb) -add_executable(cxxcaosdbcli EXCLUDE_FROM_ALL src/cxxcaosdbcli.cpp) -target_include_directories(cxxcaosdbcli PUBLIC - $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> - $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> - $<INSTALL_INTERFACE:include> -) -target_include_directories(cxxcaosdbcli SYSTEM PUBLIC - ${CONAN_INCLUDE_DIRS} -) -target_link_libraries(cxxcaosdbcli - ${LIBCAOSDB} - ${CONAN_LIBS} -) +target_link_libraries(caosdb grpc::grpc protobuf::protobuf boost::boost gtest::gtest) +target_link_libraries(caosdb grpc::grpc protobuf::protobuf) +target_include_directories(caosdb PUBLIC + $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> + $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> + $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/src> + $<INSTALL_INTERFACE:include> + ) +# if("${CMAKE_BUILD_TYPE}" MATCHES "Debug") +# add_library(caosdb_grpc SHARED ${GRPC_GENERATED}) +# add_library(caosdb SHARED ${libcaosdb_INCL} ${libcaosdb_SRC}) +# target_link_libraries(caosdb caosdb_grpc) +# set(LIBCAOSDB caosdb caosdb_grpc) + +# target_include_directories(caosdb_grpc PUBLIC +# $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> +# $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> + +# $<INSTALL_INTERFACE:include> +# ) +# target_include_directories(caosdb_grpc SYSTEM PUBLIC +# ${CONAN_INCLUDE_DIRS} +# ) +# else() +# add_library(caosdb +# SHARED ${libcaosdb_INCL} ${libcaosdb_SRC} ${GRPC_GENERATED}) +# set(LIBCAOSDB caosdb) +# endif() +# target_link_libraries(caosdb +# ${CONAN_LIBS} +# stdc++fs +# ) +# target_include_directories(caosdb PUBLIC +# $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> +# $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> +# $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/src> +# $<INSTALL_INTERFACE:include> +# ) +# target_include_directories(caosdb SYSTEM PUBLIC +# ${CONAN_INCLUDE_DIRS} +# ) + +# add_library(ccaosdb SHARED src/ccaosdb.cpp) +# target_link_libraries(ccaosdb +# ${CONAN_LIBS} +# ${LIBCAOSDB} +# stdc++fs +# ) +# target_include_directories(ccaosdb PUBLIC +# $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> +# $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> +# $<INSTALL_INTERFACE:include> +# ) +# target_include_directories(ccaosdb SYSTEM PUBLIC +# ${CONAN_INCLUDE_DIRS} +# ) + + +# add_executable(ccaosdbcli EXCLUDE_FROM_ALL src/ccaosdbcli.c) +# target_include_directories(ccaosdbcli PUBLIC +# $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> +# $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> +# $<INSTALL_INTERFACE:include> +# ) +# target_include_directories(ccaosdbcli SYSTEM PUBLIC +# ${CONAN_INCLUDE_DIRS} +# ) + +# target_link_libraries(ccaosdbcli +# ${CONAN_LIBS} +# ${LIBCAOSDB} +# ccaosdb +# ) + +# add_executable(cxxcaosdbcli EXCLUDE_FROM_ALL src/cxxcaosdbcli.cpp) +# target_include_directories(cxxcaosdbcli PUBLIC +# $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include> +# $<BUILD_INTERFACE:${libcaosdb_BINARY_DIR}/include> +# $<INSTALL_INTERFACE:include> +# ) +# target_include_directories(cxxcaosdbcli SYSTEM PUBLIC +# ${CONAN_INCLUDE_DIRS} +# ) +# target_link_libraries(cxxcaosdbcli +# ${LIBCAOSDB} +# ${CONAN_LIBS} +# ) @@ -366,76 +383,76 @@ if("${CMAKE_BUILD_TYPE}" MATCHES "Debug") add_subdirectory(test) endif() -############################################### -############ INSTALLATION ##################### -############################################### - -set(libcaosdb_INCLUDE_DEST "include/caosdb") -set(libcaosdb_LIB_DEST "lib") - -set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local/") -install( - # targets to install - TARGETS ${LIBCAOSDB} ccaosdb - # name of the CMake "export group" containing the targets we want to install - EXPORT caosdbTargets - # Dynamic, static library and include destination locations after running - # "make install" - LIBRARY DESTINATION ${libcaosdb_LIB_DEST} - ARCHIVE DESTINATION ${libcaosdb_LIB_DEST} - INCLUDES DESTINATION ${libcaosdb_INCLUDE_DEST} -) - - -set(libcaosdb_CMAKE_DEST "${libcaosdb_LIB_DEST}/cmake/caosdb") -install( - # The export we want to save (matches name defined above containing the - # install targets) - EXPORT caosdbTargets - # CMake file in which to store the export's information - FILE caosdbTargets.cmake - # Namespace prepends all targets in the export (when we import later, we - # will use caosdb::caosdb) - NAMESPACE caosdb:: - # where to place the resulting file (here, we're putting it with the library) - DESTINATION ${libcaosdb_CMAKE_DEST} -) - -install(FILES ${libcaosdb_INCL} ${PROJECT_SOURCE_DIR}/include/ccaosdb.h DESTINATION ${libcaosdb_INCLUDE_DEST}) -foreach(i RANGE "${len_proto_files}") - list(GET PROTO_FILES ${i} next_proto_file) - - # strip away the prefix path and the ".proto" suffix - string(REPLACE - "${PROJECT_SOURCE_DIR}/proto/proto/caosdb/" - "" - next_proto_module - "${next_proto_file}") - string(REPLACE - "/main.proto" - "" - next_proto_module - "${next_proto_module}") - set(next_proto_hdr - "${CMAKE_CURRENT_BINARY_DIR}/include/caosdb/${next_proto_module}/main.pb.h") - set(next_grpc_hdr - "${CMAKE_CURRENT_BINARY_DIR}/include/caosdb/${next_proto_module}/main.grpc.pb.h") - install(FILES ${next_proto_hdr} ${next_grpc_hdr} DESTINATION - ${libcaosdb_INCLUDE_DEST}/${next_proto_module}) -endforeach() - -install(FILES ${PROJECT_SOURCE_DIR}/caosdbConfig.cmake - DESTINATION ${libcaosdb_CMAKE_DEST}) - -#set_property(TARGET caosdb PROPERTY VERSION ${libcaosdb_VERSION}) -include(CMakePackageConfigHelpers) -write_basic_package_version_file( - "${PROJECT_SOURCE_DIR}/caosdbConfigVersion.cmake" - VERSION ${libcaosdb_VERSION} - COMPATIBILITY AnyNewerVersion -) -install(FILES ${PROJECT_SOURCE_DIR}/caosdbConfigVersion.cmake - DESTINATION ${libcaosdb_CMAKE_DEST}) +# ############################################### +# ############ INSTALLATION ##################### +# ############################################### + +# set(libcaosdb_INCLUDE_DEST "include/caosdb") +# set(libcaosdb_LIB_DEST "lib") + +# set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local/") +# install( +# # targets to install +# TARGETS ${LIBCAOSDB} ccaosdb +# # name of the CMake "export group" containing the targets we want to install +# EXPORT caosdbTargets +# # Dynamic, static library and include destination locations after running +# # "make install" +# LIBRARY DESTINATION ${libcaosdb_LIB_DEST} +# ARCHIVE DESTINATION ${libcaosdb_LIB_DEST} +# INCLUDES DESTINATION ${libcaosdb_INCLUDE_DEST} +# ) + + +# set(libcaosdb_CMAKE_DEST "${libcaosdb_LIB_DEST}/cmake/caosdb") +# install( +# # The export we want to save (matches name defined above containing the +# # install targets) +# EXPORT caosdbTargets +# # CMake file in which to store the export's information +# FILE caosdbTargets.cmake +# # Namespace prepends all targets in the export (when we import later, we +# # will use caosdb::caosdb) +# NAMESPACE caosdb:: +# # where to place the resulting file (here, we're putting it with the library) +# DESTINATION ${libcaosdb_CMAKE_DEST} +# ) + +# install(FILES ${libcaosdb_INCL} ${PROJECT_SOURCE_DIR}/include/ccaosdb.h DESTINATION ${libcaosdb_INCLUDE_DEST}) +# foreach(i RANGE "${len_proto_files}") +# list(GET PROTO_FILES ${i} next_proto_file) + +# # strip away the prefix path and the ".proto" suffix +# string(REPLACE +# "${PROJECT_SOURCE_DIR}/proto/proto/caosdb/" +# "" +# next_proto_module +# "${next_proto_file}") +# string(REPLACE +# "/main.proto" +# "" +# next_proto_module +# "${next_proto_module}") +# set(next_proto_hdr +# "${CMAKE_CURRENT_BINARY_DIR}/include/caosdb/${next_proto_module}/main.pb.h") +# set(next_grpc_hdr +# "${CMAKE_CURRENT_BINARY_DIR}/include/caosdb/${next_proto_module}/main.grpc.pb.h") +# install(FILES ${next_proto_hdr} ${next_grpc_hdr} DESTINATION +# ${libcaosdb_INCLUDE_DEST}/${next_proto_module}) +# endforeach() + +# install(FILES ${PROJECT_SOURCE_DIR}/caosdbConfig.cmake +# DESTINATION ${libcaosdb_CMAKE_DEST}) + +# #set_property(TARGET caosdb PROPERTY VERSION ${libcaosdb_VERSION}) +# include(CMakePackageConfigHelpers) +# write_basic_package_version_file( +# "${PROJECT_SOURCE_DIR}/caosdbConfigVersion.cmake" +# VERSION ${libcaosdb_VERSION} +# COMPATIBILITY AnyNewerVersion +# ) +# install(FILES ${PROJECT_SOURCE_DIR}/caosdbConfigVersion.cmake +# DESTINATION ${libcaosdb_CMAKE_DEST}) ####################################################### ### code formatting with clang-format