Browse Source

Minor improvements in build procedure

Tatyana Borisova 6 years ago
parent
commit
46d701b67b
4 changed files with 39 additions and 27 deletions
  1. 11 11
      CMakeLists.txt
  2. 3 0
      cmake/ProjectDefinitions.cmake
  3. 15 7
      src/lib/CMakeLists.txt
  4. 10 9
      tests/CMakeLists.txt

+ 11 - 11
CMakeLists.txt

@@ -3,10 +3,9 @@ cmake_minimum_required(VERSION 2.8)
 project(qtprotobuf)
 set(testgeneration "test_generation")
 
-set(CMAKE_CXX_STANDARD 14)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
+include(cmake/ProjectDefinitions.cmake)
 
-if (DEFINED $ENV{MAKE_TESTS})
+if(DEFINED $ENV{MAKE_TESTS})
     set(MAKE_TESTS ${MAKE_TESTS})
 elseif(NOT DEFINED MAKE_TESTS)
     set(MAKE_TESTS ON)
@@ -24,7 +23,7 @@ add_executable(${PROJECT_NAME} src/generator/main.cpp
     src/generator/globalenumsgenerator.cpp
     src/generator/servicegeneratorbase.cpp)
 
-if (WIN32)
+if(WIN32)
     #Needs to set path to protobuf libraries
     set(PROTOBUF_INSTALATION_PATH "")
     include_directories(${PROTOBUF_INSTALATION_PATH}/include)
@@ -32,28 +31,29 @@ if (WIN32)
     set(PROTOBUF_LIBRARIES_PATH ${PROTOBUF_INSTALATION_PATH}/lib)
     target_link_libraries(${PROJECT_NAME} "${PROTOBUF_LIBRARIES_PATH}/libprotobuf.lib")
     target_link_libraries(${PROJECT_NAME} "${PROTOBUF_LIBRARIES_PATH}/libprotoc.lib")
-
-elseif (UNIX)
+elseif(UNIX)
     target_link_libraries(${PROJECT_NAME} ${Protobuf_LIBRARIES} "-lprotoc")
 endif()
 
-if (MAKE_TESTS)
+if(MAKE_TESTS)
     set(TESTS_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/tests)
     file(MAKE_DIRECTORY ${TESTS_OUT_DIR})
     add_custom_target(${testgeneration})
 
-    if (WIN32)
+    file(GLOB PROTO_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto/*.proto)
+
+    if(WIN32)
         include_directories("src/lib")
         add_custom_command(TARGET ${testgeneration} POST_BUILD
             COMMAND ${PROTOBUF_INSTALATION_PATH}/bin/protoc.exe --plugin=protoc-gen-${PROJECT_NAME}=${CMAKE_BINARY_DIR}/qtprotobuf.exe --qtprotobuf_out=${CMAKE_CURRENT_BINARY_DIR}/tests
-            simpletest.proto
+            ${PROTO_FILES}
             WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto/
             COMMENT "Generating test headers"
             )
-    elseif (UNIX)
+    elseif(UNIX)
         add_custom_command(TARGET ${testgeneration} POST_BUILD
             COMMAND protoc --plugin=protoc-gen-${PROJECT_NAME}=${CMAKE_BINARY_DIR}/qtprotobuf --qtprotobuf_out=${CMAKE_CURRENT_BINARY_DIR}/tests
-            *.proto
+            ${PROTO_FILES}
             WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto/
             COMMENT "Generating test headers"
             )

+ 3 - 0
cmake/ProjectDefinitions.cmake

@@ -0,0 +1,3 @@
+set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+

+ 15 - 7
src/lib/CMakeLists.txt

@@ -1,25 +1,33 @@
 find_package(Qt5 COMPONENTS Core REQUIRED)
 
+include(../../cmake/ProjectDefinitions.cmake)
+
+set(SUPPORT_LIBRARY_TARGET qtprotobufsupport)
+
 include_directories(${Qt5Core_INCLUDE_DIRS})
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_AUTORCC ON)
-set(CMAKE_CXX_STANDARD 14)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
-if (Qt5_POSITION_INDEPENDENT_CODE)
+if(Qt5_POSITION_INDEPENDENT_CODE)
   set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 endif()
 
-add_library(qtprotobufsupport
-    universallistmodelbase.cpp
+
+file(GLOB SOURCES universallistmodelbase.cpp
     universallistmodel.cpp
     protobufobject.cpp
     qtprotobuf.cpp
     qtprotobuflogging.cpp)
 
-set_target_properties(qtprotobufsupport PROPERTIES PUBLIC_HEADER "universallistmodelbase.h;universallistmodel.h;protobufobject.h;qtprotobuftypes.h;qtprotobuf.h;qtprotobuflogging.h")
+file(GLOB HEADERS universallistmodelbase.h
+    universallistmodel.h
+    protobufobject.h
+    qtprotobuftypes.h
+    qtprotobuf.h)
 
-install(TARGETS qtprotobufsupport
+add_library(${SUPPORT_LIBRARY_TARGET} ${SOURCES})
+set_target_properties(${SUPPORT_LIBRARY_TARGET} PROPERTIES PUBLIC_HEADER "${HEADERS}")
+install(TARGETS ${SUPPORT_LIBRARY_TARGET}
     ARCHIVE DESTINATION lib
     PUBLIC_HEADER DESTINATION include)

+ 10 - 9
tests/CMakeLists.txt

@@ -1,3 +1,5 @@
+cmake_minimum_required(VERSION 2.8)
+
 set(testtarget "qtprotobuf_test")
 
 if (WIN32)
@@ -17,16 +19,16 @@ elseif (UNIX)
     endif()
 endif()
 
+include(../cmake/ProjectDefinitions.cmake)
+
 find_package(Qt5 COMPONENTS Core REQUIRED)
 
 include_directories(${Qt5Core_INCLUDE_DIRS})
 set(CMAKE_INCLUDE_CURRENT_DIR OFF)
 set(CMAKE_AUTOMOC OFF)
 set(CMAKE_AUTORCC ON)
-set(CMAKE_CXX_STANDARD 14)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
-if (Qt5_POSITION_INDEPENDENT_CODE)
+if(Qt5_POSITION_INDEPENDENT_CODE)
     set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 endif()
 
@@ -39,17 +41,16 @@ QT5_WRAP_CPP(MOC_SOURCES ${GENERATED_HEADERS})
 
 include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src/lib)
 
-if (WIN32)
+if(WIN32)
     #Set  path to GTest build libraries
     set(GTEST_BOTH_LIBRARIES "")
     #Set  path to GTest include directory
     include_directories(${GTEST_INCLUDE_PATHS} "/")
-    #Need for generated code
-elseif (UNIX)
+elseif(UNIX)
     include_directories(${GTEST_INCLUDE_DIRS})
 endif()
 
-file(GLOB HEADERS ${TESTS_OUT_DIR})
+file(GLOB HEADERS ${TESTS_OUT_DIR}/*.h)
 file(GLOB SOURCES main.cpp
     simpletest.cpp
     serializationtest.cpp
@@ -59,9 +60,9 @@ file(GLOB SOURCES main.cpp
 file(GLOB PROTOS proto/*.proto)
 
 add_executable(${testtarget} ${SOURCES} ${MOC_SOURCES} ${GENERATED_SOURCES} ${PROTOS})
-if (WIN32)
+if(WIN32)
     target_link_libraries(${testtarget} "${GTEST_BOTH_LIBRARIES}/gmock_main.lib" "${GTEST_BOTH_LIBRARIES}/gmock.lib" qtprotobufsupport Qt5::Core)
-elseif (UNIX)
+elseif(UNIX)
     target_link_libraries(${testtarget} gtest qtprotobufsupport Qt5::Core)
 endif()
 add_dependencies(${testtarget} ${testgeneration})