diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a79ad1944436beb30f82d1149dd1c840780a0287..8f77eea4848b735b3489d93238e3335e36cf04c5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -83,6 +83,9 @@ test: - mkdir build - cd build - conan install .. -s "compiler.libcxx=libstdc++11" + - FILE_TO_BE_PATCHED="$(grep "std::unique_ptr<ContextAllocator> context_allocator) {}" -l -r $(conan config home))" + - echo "FILE_TO_BE_PATCHED=$FILE_TO_BE_PATCHED" + - sed -e "s|std::unique_ptr<ContextAllocator> context_allocator) {}|std::unique_ptr<ContextAllocator> /*context_allocator*/) {}|" -i $FILE_TO_BE_PATCHED - cmake -DCMAKE_BUILD_TYPE=Debug .. - cmake --build . - cmake --build . --target unit_test_coverage diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a70cb28277060f30a0a030ddbf31f1511513374..2f94b5e8fd3ef7aa399c250e32dcbc0e7ef44ad9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,10 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) +IF (WIN32) + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) +ENDIF() + ########################################### ### DEPENDENCY MANAGEMENT with CONAN ########################################### @@ -79,8 +83,13 @@ set(PROTO_FILES set(PROTO_PATH ${PROJECT_SOURCE_DIR}/proto/proto) # compiler binaries -set(_PROTOBUF_PROTOC "${CMAKE_BINARY_DIR}/build_tools/protoc") -set(_GRPC_CPP_PLUGIN_EXECUTABLE "${CMAKE_BINARY_DIR}/build_tools/grpc_cpp_plugin") +IF (WIN32) + set(_PROTOBUF_PROTOC "${CMAKE_BINARY_DIR}/build_tools/protoc.exe") + set(_GRPC_CPP_PLUGIN_EXECUTABLE "${CMAKE_BINARY_DIR}/build_tools/grpc_cpp_plugin.exe") +ELSE() + set(_PROTOBUF_PROTOC "${CMAKE_BINARY_DIR}/build_tools/protoc") + set(_GRPC_CPP_PLUGIN_EXECUTABLE "${CMAKE_BINARY_DIR}/build_tools/grpc_cpp_plugin") +ENDIF() # Generated sources list(LENGTH PROTO_FILES len_proto_files) @@ -248,6 +257,7 @@ if(_LINTING) add_compiler_flag("-pedantic") add_compiler_flag("-Werror") + message(STATUS "PEDANTIC_CMAKE_CXX_FLAGS: [${PEDANTIC_CMAKE_CXX_FLAGS}]") set(TARGET_CAOSDB_COMPILE_FLAGS "${TARGET_CAOSDB_COMPILE_FLAGS} ${PEDANTIC_CMAKE_CXX_FLAGS}") set(TARGET_CCAOSDB_COMPILE_FLAGS "${TARGET_CCAOSDB_COMPILE_FLAGS} ${PEDANTIC_CMAKE_C_FLAGS}") set(TARGET_CXXCAOSDBCLI_COMPILE_FLAGS "${TARGET_CXXCAOSDBCLI_COMPILE_FLAGS} ${PEDANTIC_CMAKE_CXX_FLAGS}") diff --git a/README_SETUP.md b/README_SETUP.md index 34ae13a3eb91037e4bcb183c7ca8fe2eba160a3c..68b10626bf79286e3439a933efc551743ff7bc99 100644 --- a/README_SETUP.md +++ b/README_SETUP.md @@ -33,6 +33,19 @@ have to add `build/lib/` (or, alternatively after installation, `CMAKE_INSTALL_PREFIX/lib`) to your `DYLD_LIBRARY_PATH` environmental variable. +### How to build on Windows + +We use [Visual Studio 2019](https://visualstudio.microsoft.com/de/vs/features/cplusplus/) +as compiler. We use [cmake](https://cmake.org/download/) as build tool. + +1. `mkdir build` +2. `cd build` +3. `conan install .. -g visual_studio -s arch=x86_64 -s build_type=Release -s compiler.toolset=v142 -s compiler.version=16 -s compiler.runtime=MD --build=missing --update` +4. `cmake -B . ..` +5. open ` libcaosdb.sln` with Visual Studio, change the buildtype to `Release` + and build the project. (You can open Tools/Command Line/Developer Command + Prompt and execute `msbuild libcaosdb.sln /property:Configuration=Release`) + ## Unit Tests ### Build diff --git a/conanfile.py b/conanfile.py index 4ae59d5c79392e6cacc26e6dbfe2306010be3c0e..0fee0db6e8f6bec28fb514d98bda07050171a630 100644 --- a/conanfile.py +++ b/conanfile.py @@ -28,7 +28,7 @@ class CaosdbConan(ConanFile): def imports(self): self.copy("protoc*", "build_tools", "bin") - self.copy("grpc_cpp_plugin", "build_tools", "bin") + self.copy("grpc_cpp_plugin*", "build_tools", "bin") def build(self): cmake = CMake(self) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index aab1f0a35b5a71436505a9ad33d13deabeafb8aa..4fbdc46040edcca4d92de9122a6520488a573017 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -82,6 +82,7 @@ include(CodeCoverage) if (LCOV_PATH) message(STATUS "Found LCOV: ${LCOV_PATH}") target_link_libraries(caosdb gcov) + target_link_libraries(ccaosdb gcov) setup_target_for_coverage_lcov( NAME unit_test_coverage EXECUTABLE ctest -L caosdb-cpplib-unit-tests @@ -91,11 +92,13 @@ if (LCOV_PATH) GENHTML_ARGS --rc lcov_branch_coverage=1 ) message(STATUS "Adding COMPILE_FLAGS for coverage: ${COVERAGE_COMPILER_FLAGS}") - set(TARGET_CAOSDB_COMPILE_FLAGS "${TARGET_CAOSDB_COMPILE_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE) - set(TARGET_CCAOSDB_COMPILE_FLAGS "${TARGET_CCAOSDB_COMPILE_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE) + set(TARGET_CAOSDB_COMPILE_FLAGS "${TARGET_CAOSDB_COMPILE_FLAGS} ${COVERAGE_COMPILER_FLAGS}") + set(TARGET_CCAOSDB_COMPILE_FLAGS "${TARGET_CCAOSDB_COMPILE_FLAGS} ${COVERAGE_COMPILER_FLAGS}") + set(TARGET_CAOSDB_COMPILE_FLAGS ${TARGET_CAOSDB_COMPILE_FLAGS} PARENT_SCOPE) + set(TARGET_CCAOSDB_COMPILE_FLAGS ${TARGET_CCAOSDB_COMPILE_FLAGS} PARENT_SCOPE) set_target_properties(caosdb PROPERTIES COMPILE_FLAGS "${TARGET_CAOSDB_COMPILE_FLAGS}") - set_target_properties(caosdb PROPERTIES + set_target_properties(ccaosdb PROPERTIES COMPILE_FLAGS "${TARGET_CCAOSDB_COMPILE_FLAGS}") else () message(WARNING "Could not generate code coverage report. Please install lcov.")