From c49b48d0ac51d570799736106d1f075b4fdb82d5 Mon Sep 17 00:00:00 2001 From: Sergey Yakubov <sergey.yakubov@desy.de> Date: Wed, 3 Jan 2018 16:11:12 +0100 Subject: [PATCH] refactor so that only single library and single header were needed, add independent Makefile and CMakeLists to example. Add install commands --- CMakeLists.txt | 2 -- common/cpp/CMakeLists.txt | 4 ++- examples/worker/process_folder/CMakeLists.txt | 21 +++++++++------- .../process_folder/CMakeLists_separate.in | 22 ++++++++++++++++ examples/worker/process_folder/Makefile.in | 25 +++++++++++++++++++ .../worker/process_folder/process_folder.cpp | 2 +- producer/api/CMakeLists.txt | 3 +-- .../read_file_content/CMakeLists.txt | 5 ++-- .../read_files_in_folder/CMakeLists.txt | 6 ++--- .../worker/connect_multithread/CMakeLists.txt | 2 +- tests/worker/next_multithread/CMakeLists.txt | 2 +- worker/api/cpp/CMakeLists.txt | 18 +++++++------ worker/api/cpp/include/hidra2_worker.h | 6 +++++ worker/api/cpp/include/worker/data_broker.h | 3 ++- 14 files changed, 91 insertions(+), 30 deletions(-) create mode 100644 examples/worker/process_folder/CMakeLists_separate.in create mode 100644 examples/worker/process_folder/Makefile.in create mode 100644 worker/api/cpp/include/hidra2_worker.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 78e4d6160..6ee7afc36 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,6 @@ ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "GNU") SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") ENDIF(WIN32) -message(STATUS ${CMAKE_CXX_COMPILER_ID}) - option(BUILD_TESTS "Uses googletest to build tests" OFF) option(BUILD_INTEGRATION_TESTS "Include integration tests (CMAKE >3.7 is needed)" OFF) option(BUILD_DOCS "Uses doxygen to build the documentaion" OFF) diff --git a/common/cpp/CMakeLists.txt b/common/cpp/CMakeLists.txt index 0cf8083f6..3d3950be1 100644 --- a/common/cpp/CMakeLists.txt +++ b/common/cpp/CMakeLists.txt @@ -15,7 +15,9 @@ ENDIF(WIN32) ################################ # Library ################################ -add_library(${TARGET_NAME} STATIC ${SOURCE_FILES}) +add_library(${TARGET_NAME} OBJECT ${SOURCE_FILES}) #add_library(${TARGET_NAME} SHARED ${SOURCE_FILES}) target_include_directories(${TARGET_NAME} PUBLIC include) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) + +install(DIRECTORY include/ DESTINATION include) diff --git a/examples/worker/process_folder/CMakeLists.txt b/examples/worker/process_folder/CMakeLists.txt index 91328be81..4ec508a10 100644 --- a/examples/worker/process_folder/CMakeLists.txt +++ b/examples/worker/process_folder/CMakeLists.txt @@ -1,15 +1,8 @@ set(TARGET_NAME worker_processfolder) set(SOURCE_FILES process_folder.cpp) - -################################ -# Executable and link -################################ -#if (CMAKE_BUILD_TYPE STREQUAL "Release") -#set(CMAKE_FIND_STATIC FIRST) -#endif() add_executable(${TARGET_NAME} ${SOURCE_FILES}) -target_link_libraries(${TARGET_NAME} common worker-api ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(${TARGET_NAME} hidra2-worker ${CMAKE_THREAD_LIBS_INIT}) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) #use expression generator to get rid of VS adding Debug/Release folders set_target_properties(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY @@ -22,6 +15,16 @@ message (STATUS ${VAR}) if (CMAKE_COMPILER_IS_GNUCXX) set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS_DEBUG "--coverage") endif() -#set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "-static-libstdc++") add_example_test("${TARGET_NAME}") + + +set (dir examples/worker/process_folder) +install(TARGETS ${TARGET_NAME} DESTINATION "${dir}") +install(FILES ${SOURCE_FILES} DESTINATION "${dir}") + +configure_file(CMakeLists_separate.in CMakeLists_separate.txt @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CMakeLists_separate.txt DESTINATION "${dir}" RENAME CMakeLists.txt) + +configure_file(Makefile.in Makefile_LINUX @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Makefile_LINUX DESTINATION "${dir}") diff --git a/examples/worker/process_folder/CMakeLists_separate.in b/examples/worker/process_folder/CMakeLists_separate.in new file mode 100644 index 000000000..cd02b336c --- /dev/null +++ b/examples/worker/process_folder/CMakeLists_separate.in @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 2.8) + +project(worker_processfolder) + +set(CMAKE_CXX_STANDARD 11) + +IF(CMAKE_C_COMPILER_ID STREQUAL "GNU") + SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") +ENDIF() + +find_package (Threads) + +set(TARGET_NAME ${CMAKE_PROJECT_NAME}) + +set(SOURCE_FILES process_folder.cpp) + +link_directories(@CMAKE_INSTALL_PREFIX@/lib) + +add_executable(${TARGET_NAME} ${SOURCE_FILES}) +target_include_directories(${TARGET_NAME} PUBLIC @CMAKE_INSTALL_PREFIX@/include) +target_link_libraries(${TARGET_NAME} hidra2-worker ${CMAKE_THREAD_LIBS_INIT}) + diff --git a/examples/worker/process_folder/Makefile.in b/examples/worker/process_folder/Makefile.in new file mode 100644 index 000000000..f71764db4 --- /dev/null +++ b/examples/worker/process_folder/Makefile.in @@ -0,0 +1,25 @@ +PROGRAM=worker_processfolder + +CXX=g++ +CXXFLAGS=-std=c++11 +LDFLAGS=-pthread -static-libgcc -static-libstdc++ +LIBS=-L @CMAKE_INSTALL_PREFIX@/lib -lhidra2-worker +INCLUDE=@CMAKE_INSTALL_PREFIX@/include +RM=rm -f + +SRCS=process_folder.cpp +OBJS=$(subst .cpp,.o,$(SRCS)) + +all: $(PROGRAM) + +$(PROGRAM): $(OBJS) + $(CXX) $(LDFLAGS) -o $@ $^ $(LIBS) + +%.o: %.cpp + $(CXX) $(CXXFLAGS) -I$(INCLUDE) -c -o $@ $< + +clean: + $(RM) $(OBJS) + +distclean: clean + $(RM) $(PROGRAM) diff --git a/examples/worker/process_folder/process_folder.cpp b/examples/worker/process_folder/process_folder.cpp index c2c0b0587..54935ab54 100644 --- a/examples/worker/process_folder/process_folder.cpp +++ b/examples/worker/process_folder/process_folder.cpp @@ -6,7 +6,7 @@ #include <chrono> #include <iomanip> -#include "worker/data_broker.h" +#include "hidra2_worker.h" using hidra2::WorkerErrorCode; using std::chrono::high_resolution_clock; diff --git a/producer/api/CMakeLists.txt b/producer/api/CMakeLists.txt index b09e6b457..4bd5421db 100644 --- a/producer/api/CMakeLists.txt +++ b/producer/api/CMakeLists.txt @@ -5,9 +5,8 @@ set(SOURCE_FILES src/producer/producer.cpp include/producer/producer.h) ################################ # Library ################################ -add_library(${TARGET_NAME} STATIC ${SOURCE_FILES}) +add_library(${TARGET_NAME} STATIC ${SOURCE_FILES} $<TARGET_OBJECTS:common>) target_include_directories(${TARGET_NAME} PUBLIC include) -target_link_libraries(${TARGET_NAME} common) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) ################################ diff --git a/tests/system_io/read_file_content/CMakeLists.txt b/tests/system_io/read_file_content/CMakeLists.txt index 21ad081c5..55a84f07f 100644 --- a/tests/system_io/read_file_content/CMakeLists.txt +++ b/tests/system_io/read_file_content/CMakeLists.txt @@ -5,8 +5,9 @@ set(SOURCE_FILES read_file_content.cpp) ################################ # Executable and link ################################ -add_executable(${TARGET_NAME} ${SOURCE_FILES}) -target_link_libraries(${TARGET_NAME} test_common common ) +add_executable(${TARGET_NAME} ${SOURCE_FILES} $<TARGET_OBJECTS:common> ) +target_link_libraries(${TARGET_NAME} test_common) +target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_SOURCE_DIR}/common/cpp/include) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) ################################ diff --git a/tests/system_io/read_files_in_folder/CMakeLists.txt b/tests/system_io/read_files_in_folder/CMakeLists.txt index d8019e0e8..cb22f8bd7 100644 --- a/tests/system_io/read_files_in_folder/CMakeLists.txt +++ b/tests/system_io/read_files_in_folder/CMakeLists.txt @@ -5,9 +5,9 @@ set(SOURCE_FILES read_folder_content.cpp) ################################ # Executable and link ################################ -add_executable(${TARGET_NAME} ${SOURCE_FILES}) -target_link_libraries(${TARGET_NAME} test_common common) -#target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_SOURCE_DIR}/tests/common/cpp/include) +add_executable(${TARGET_NAME} ${SOURCE_FILES} $<TARGET_OBJECTS:common>) +target_link_libraries(${TARGET_NAME} test_common) +target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_SOURCE_DIR}/common/cpp/include) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) ################################ diff --git a/tests/worker/connect_multithread/CMakeLists.txt b/tests/worker/connect_multithread/CMakeLists.txt index 8dc1b8ae7..31364d77e 100644 --- a/tests/worker/connect_multithread/CMakeLists.txt +++ b/tests/worker/connect_multithread/CMakeLists.txt @@ -6,7 +6,7 @@ set(SOURCE_FILES content_multithread.cpp) # Executable and link ################################ add_executable(${TARGET_NAME} ${SOURCE_FILES}) -target_link_libraries(${TARGET_NAME} test_common common worker-api ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(${TARGET_NAME} test_common hidra2-worker ${CMAKE_THREAD_LIBS_INIT}) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) if (CMAKE_COMPILER_IS_GNUCXX) set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS_DEBUG "--coverage") diff --git a/tests/worker/next_multithread/CMakeLists.txt b/tests/worker/next_multithread/CMakeLists.txt index 13de6686b..a386726ec 100644 --- a/tests/worker/next_multithread/CMakeLists.txt +++ b/tests/worker/next_multithread/CMakeLists.txt @@ -6,7 +6,7 @@ set(SOURCE_FILES next_multithread.cpp) # Executable and link ################################ add_executable(${TARGET_NAME} ${SOURCE_FILES}) -target_link_libraries(${TARGET_NAME} test_common common worker-api ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(${TARGET_NAME} test_common hidra2-worker ${CMAKE_THREAD_LIBS_INIT}) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) if (CMAKE_COMPILER_IS_GNUCXX) set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS_DEBUG "--coverage") diff --git a/worker/api/cpp/CMakeLists.txt b/worker/api/cpp/CMakeLists.txt index da84ebcfb..da6376a3f 100644 --- a/worker/api/cpp/CMakeLists.txt +++ b/worker/api/cpp/CMakeLists.txt @@ -1,18 +1,18 @@ -set(TARGET_NAME worker-api) +set(TARGET_NAME hidra2-worker) -set(SOURCE_FILES include/worker/data_broker.h src/data_broker.cpp src/folder_data_broker.cpp src/folder_data_broker.h) +set(SOURCE_FILES include/worker/data_broker.h src/data_broker.cpp src/folder_data_broker.cpp src/folder_data_broker.h include/hidra2_worker.h) ################################ # Library ################################ -#add_library(${TARGET_NAME} SHARED ${SOURCE_FILES}) -add_library(${TARGET_NAME} STATIC ${SOURCE_FILES}) +add_library(${TARGET_NAME} STATIC ${SOURCE_FILES} $<TARGET_OBJECTS:common>) -target_include_directories(${TARGET_NAME} PUBLIC include) -target_link_libraries(${TARGET_NAME} common) +target_include_directories(${TARGET_NAME} PUBLIC include ${CMAKE_SOURCE_DIR}/common/cpp/include) +#target_link_libraries(${TARGET_NAME} $<TARGET_OBJECTS:common>) set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) + ################################ # Testing ################################ @@ -21,4 +21,8 @@ set(TEST_SOURCE_FILES unittests/test_worker_api.cpp set(TEST_LIBRARIES "${TARGET_NAME}") -gtest(${TARGET_NAME} "${TEST_SOURCE_FILES}" "${TEST_LIBRARIES}") \ No newline at end of file +gtest(${TARGET_NAME} "${TEST_SOURCE_FILES}" "${TEST_LIBRARIES}") + +install(TARGETS ${TARGET_NAME} DESTINATION lib) + +install(DIRECTORY include/ DESTINATION include) diff --git a/worker/api/cpp/include/hidra2_worker.h b/worker/api/cpp/include/hidra2_worker.h new file mode 100644 index 000000000..f919a5496 --- /dev/null +++ b/worker/api/cpp/include/hidra2_worker.h @@ -0,0 +1,6 @@ +#ifndef HIDRA2_HIDRA2_WORKER_H +#define HIDRA2_HIDRA2_WORKER_H + +#include "worker/data_broker.h" + +#endif //HIDRA2_HIDRA2_WORKER_H diff --git a/worker/api/cpp/include/worker/data_broker.h b/worker/api/cpp/include/worker/data_broker.h index 4383aeeb2..57393eab7 100644 --- a/worker/api/cpp/include/worker/data_broker.h +++ b/worker/api/cpp/include/worker/data_broker.h @@ -3,7 +3,8 @@ #include <memory> #include <string> -#include <common/file_info.h> + +#include "common/file_info.h" namespace hidra2 { -- GitLab