Преглед на файлове

Support unit test functionality for Windows.

Tatyana Borisova преди 6 години
родител
ревизия
8985fbc5d0
променени са 3 файла, в които са добавени 43 реда и са изтрити 14 реда
  1. 19 7
      CMakeLists.txt
  2. 1 1
      src/lib/CMakeLists.txt
  3. 23 6
      tests/CMakeLists.txt

+ 19 - 7
CMakeLists.txt

@@ -5,6 +5,7 @@ set(testgeneration "test_generation")
 
 set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(ENV{MAKE_TESTS} ON)
 
 find_package(Protobuf)
 
@@ -29,14 +30,25 @@ endif()
 if ($ENV{MAKE_TESTS})
     set(TESTS_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/tests)
     file(MAKE_DIRECTORY ${TESTS_OUT_DIR})
-
     add_custom_target(${testgeneration})
-    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
-        simpletest.proto
-        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto/
-        COMMENT "Generating test headers"
-    )
+
+    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
+            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto/
+            COMMENT "Generating test headers"
+            )
+    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
+            simpletest.proto
+            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto/
+            COMMENT "Generating test headers"
+            )
+    endif()
+
     add_dependencies(${testgeneration} ${PROJECT_NAME})
     add_subdirectory("tests")
 endif()

+ 1 - 1
src/lib/CMakeLists.txt

@@ -13,7 +13,7 @@ endif()
 
 add_library(qtprotobufsupport "universallistmodelbase.cpp" "universallistmodel.cpp" "protobufobject.cpp")
 
-set_target_properties(qtprotobufsupport PROPERTIES PUBLIC_HEADER "universallistmodelbase.h;universallistmodel.h")
+set_target_properties(qtprotobufsupport PROPERTIES PUBLIC_HEADER "universallistmodelbase.h;universallistmodel.h;protobufobject.h")
 
 install(TARGETS qtprotobufsupport
     ARCHIVE DESTINATION lib

+ 23 - 6
tests/CMakeLists.txt

@@ -1,6 +1,11 @@
 set(testtarget "qtprotobuf_test")
 
-find_package(GTest REQUIRED)
+if (WIN32)
+    find_package(GTest)
+elseif (UNIX)
+    find_package(GTest REQUIRED)
+endif()
+
 find_package(Qt5 COMPONENTS Core REQUIRED)
 
 include_directories(${Qt5Core_INCLUDE_DIRS})
@@ -11,7 +16,7 @@ set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 if (Qt5_POSITION_INDEPENDENT_CODE)
-  set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+    set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 endif()
 
 file(GLOB GENERATED_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/*.h)
@@ -21,11 +26,23 @@ file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/*.cpp)
 list(FILTER GENERATED_SOURCES EXCLUDE REGEX "moc_.*cpp")
 QT5_WRAP_CPP(MOC_SRCS ${GENERATED_HEADERS})
 
-include_directories(${GTEST_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src/lib)
-
+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
+    include_directories(${CMAKE_CURRENT_BINARY_DIR})
+elseif (UNIX)
+    include_directories(${GTEST_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src/lib)
+endif()
 
 file(GLOB HEADERS ${TESTS_OUT_DIR})
 
-add_executable(${testtarget} "main.cpp" "simpletest.cpp" "serializationtest.cpp" ${MOC_SRCS} ${GENERATED_SOURCES})
-target_link_libraries(${testtarget} ${GTEST_BOTH_LIBRARIES} Qt5::Core)
+add_executable(${testtarget} "main.cpp" "simpletest.cpp" "serializationtest.cpp" ${MOC_SRCS} ${GENERATED_SOURCES} ${GENERATED_HEADERS})
+if (WIN32)
+    target_link_libraries(${testtarget} "${GTEST_BOTH_LIBRARIES}/gmock_main.lib" "${GTEST_BOTH_LIBRARIES}/gmock.lib"  Qt5::Core)
+elseif (UNIX)
+    target_link_libraries(${testtarget} ${GTEST_BOTH_LIBRARIES} Qt5::Core)
+endif()
 add_dependencies(${testtarget} ${testgeneration})