Browse Source

Fix in-project integration

- Set valid binary directory for protobuf .cmake files
- Set QTPROTOBUF_EXECUTABLE visibility in global scope
Alexey Edelev 5 years ago
parent
commit
86ec62fc84

+ 8 - 5
CMakeLists.txt

@@ -5,6 +5,9 @@ project(QtProtobufProject VERSION ${QTPROTOBUF_PROJECT_VERSION} LANGUAGES CXX)
 
 include(GNUInstallDirs)
 
+set(QTPROTOBUF_CMAKE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+set(QTPROTOBUF_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+
 find_package(Qt5 COMPONENTS Core Network Qml REQUIRED)
 if(Qt5Core_VERSION VERSION_LESS "5.12.3")
     # grpc target requires QT version not less than 5.12.3
@@ -25,15 +28,15 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/3rdparty/grpc/CMakeLists.txt")
         set(gRPC_FOUND TRUE)
     endif()
 else()
-    include("cmake/ProtobufLookup.cmake")
-    include("cmake/gRPCLookup.cmake")
+    include("${QTPROTOBUF_CMAKE_DIR}/ProtobufLookup.cmake")
+    include("${QTPROTOBUF_CMAKE_DIR}/gRPCLookup.cmake")
 endif()
 
 set(gtest_force_shared_crt OFF)
 set(QTPROTOBUF_COMMON_NAMESPACE QtProtobufProject)
 set(GENERATOR_TARGET qtprotobufgen)
 set(QTPROTOBUF_EXECUTABLE_INSTALL ${CMAKE_INSTALL_FULL_BINDIR}/${GENERATOR_TARGET})
-set(QTPROTOBUF_EXECUTABLE $<TARGET_FILE:${GENERATOR_TARGET}>)
+set(QTPROTOBUF_EXECUTABLE $<TARGET_FILE:${GENERATOR_TARGET}> CACHE STRING "QTPROTOBUF_EXECUTABLE is set ${QTPROTOBUF_EXECUTABLE}" FORCE)
 
 if(UNIX)
     if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
@@ -65,9 +68,9 @@ add_subdirectory("src/grpc")
 add_subdirectory("src/generator")
 
 configure_package_config_file(
-    "${CMAKE_CURRENT_SOURCE_DIR}/ProjectConfig.cmake.in" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+    "${CMAKE_CURRENT_SOURCE_DIR}/ProjectConfig.cmake.in" "${QTPROTOBUF_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
     INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake")
-install(FILES "${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
+install(FILES "${QTPROTOBUF_BINARY_DIR}/${PROJECT_NAME}Config.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
 
 export(PACKAGE ${PROJECT_NAME})
 

+ 1 - 1
cmake/Coverage.cmake

@@ -15,7 +15,7 @@ function(add_coverage_target)
     set(oneValueArgs TARGET)
     set(multiValueArgs)
     cmake_parse_arguments(add_coverage_target "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-    set(GCOV_OUTPUT_DIR ${CMAKE_BINARY_DIR}/gcov/${add_coverage_target_TARGET})
+    set(GCOV_OUTPUT_DIR ${QTPROTOBUF_BINARY_DIR}/gcov/${add_coverage_target_TARGET})
     set(OBJECTS_DIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${add_coverage_target_TARGET}.dir)
     set(COVERAGE_TARGET ${add_coverage_target_TARGET}_coverage)
     if(MAKE_COVERAGE AND UNIX)

+ 1 - 1
examples/addressbookserver/CMakeLists.txt

@@ -1,6 +1,6 @@
 set(TARGET addressbookserver)
 
-include(${CMAKE_SOURCE_DIR}/cmake/QtProtobufCommon.cmake)
+include(${QTPROTOBUF_CMAKE_DIR}/QtProtobufCommon.cmake)
 
 set(GENERATED_SOURCES
     ${CMAKE_CURRENT_BINARY_DIR}/addressbook.pb.cc

+ 1 - 1
examples/simplechatserver/CMakeLists.txt

@@ -1,6 +1,6 @@
 set(TARGET simplechatserver)
 
-include(${CMAKE_SOURCE_DIR}/cmake/QtProtobufCommon.cmake)
+include(${QTPROTOBUF_CMAKE_DIR}/QtProtobufCommon.cmake)
 
 set(GENERATED_SOURCES
     ${CMAKE_CURRENT_BINARY_DIR}/simplechat.pb.cc

+ 5 - 5
src/grpc/CMakeLists.txt

@@ -11,7 +11,7 @@ set(TARGET_BIN_DIR ${CMAKE_INSTALL_BINDIR})
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_AUTORCC ON)
 
-include(${CMAKE_SOURCE_DIR}/cmake/Coverage.cmake)
+include(${QTPROTOBUF_CMAKE_DIR}/Coverage.cmake)
 
 file(GLOB SOURCES qgrpcasyncreply.cpp
     qgrpcstatus.cpp
@@ -61,14 +61,14 @@ install(EXPORT ${TARGET_EXPORT} NAMESPACE ${QTPROTOBUF_COMMON_NAMESPACE}:: FILE
 
 include(CMakePackageConfigHelpers)
 configure_package_config_file(
-    "${TARGET_CONFIG}.cmake.in" "${CMAKE_BINARY_DIR}/${TARGET_CONFIG}.cmake"
+    "${TARGET_CONFIG}.cmake.in" "${QTPROTOBUF_BINARY_DIR}/${TARGET_CONFIG}.cmake"
     INSTALL_DESTINATION "${TARGET_CMAKE_DIR}")
 
-install(FILES "${CMAKE_BINARY_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
+install(FILES "${QTPROTOBUF_BINARY_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
 
 export(TARGETS ${TARGET} NAMESPACE ${QTPROTOBUF_COMMON_NAMESPACE}:: FILE ${TARGET_EXPORT}.cmake)
 
-configure_file("${CMAKE_SOURCE_DIR}/cmake/gRPCLookup.cmake" "${CMAKE_BINARY_DIR}/gRPCLookup.cmake" COPYONLY)
-install(FILES "${CMAKE_BINARY_DIR}/gRPCLookup.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
+configure_file("${QTPROTOBUF_CMAKE_DIR}/gRPCLookup.cmake" "${QTPROTOBUF_BINARY_DIR}/gRPCLookup.cmake" COPYONLY)
+install(FILES "${QTPROTOBUF_BINARY_DIR}/gRPCLookup.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
 
 add_coverage_target(TARGET ${TARGET})

+ 7 - 7
src/protobuf/CMakeLists.txt

@@ -13,7 +13,7 @@ set(CMAKE_AUTORCC ON)
 
 find_package(Qt5 COMPONENTS Core Qml REQUIRED)
 
-include(${CMAKE_SOURCE_DIR}/cmake/Coverage.cmake)
+include(${QTPROTOBUF_CMAKE_DIR}/Coverage.cmake)
 
 file(GLOB SOURCES
     qtprotobuf.cpp
@@ -88,18 +88,18 @@ install(EXPORT ${TARGET_EXPORT} NAMESPACE ${QTPROTOBUF_COMMON_NAMESPACE}:: FILE
 
 include(CMakePackageConfigHelpers)
 configure_package_config_file(
-    "${TARGET_CONFIG}.cmake.in" "${CMAKE_BINARY_DIR}/${TARGET_CONFIG}.cmake"
+    "${TARGET_CONFIG}.cmake.in" "${QTPROTOBUF_BINARY_DIR}/${TARGET_CONFIG}.cmake"
     INSTALL_DESTINATION "${TARGET_CMAKE_DIR}")
 
-install(FILES "${CMAKE_BINARY_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
+install(FILES "${QTPROTOBUF_BINARY_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
 
 export(TARGETS ${TARGET} NAMESPACE ${QTPROTOBUF_COMMON_NAMESPACE}:: FILE ${TARGET_EXPORT}.cmake)
 
-configure_file("${CMAKE_CURRENT_SOURCE_DIR}/QtProtobufGen.cmake.in" "${CMAKE_BINARY_DIR}/QtProtobufGen.cmake" @ONLY)
-install(FILES "${CMAKE_BINARY_DIR}/QtProtobufGen.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/QtProtobufGen.cmake.in" "${QTPROTOBUF_BINARY_DIR}/QtProtobufGen.cmake" @ONLY)
+install(FILES "${QTPROTOBUF_BINARY_DIR}/QtProtobufGen.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
 
-configure_file("${CMAKE_SOURCE_DIR}/cmake/ProtobufLookup.cmake" "${CMAKE_BINARY_DIR}/ProtobufLookup.cmake" COPYONLY)
-install(FILES "${CMAKE_BINARY_DIR}/ProtobufLookup.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
+configure_file("${QTPROTOBUF_CMAKE_DIR}/ProtobufLookup.cmake" "${QTPROTOBUF_BINARY_DIR}/ProtobufLookup.cmake" COPYONLY)
+install(FILES "${QTPROTOBUF_BINARY_DIR}/ProtobufLookup.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
 
 add_subdirectory("quick")
 

+ 1 - 1
tests/test_grpc/CMakeLists.txt

@@ -1,4 +1,4 @@
-include(${CMAKE_SOURCE_DIR}/cmake/QtProtobufCommon.cmake)
+include(${QTPROTOBUF_CMAKE_DIR}/QtProtobufCommon.cmake)
 
 set(GENERATED_HEADERS
     simplestringmessage.h

+ 1 - 1
tests/test_protobuf/CMakeLists.txt

@@ -1,6 +1,6 @@
 set(TARGET qtprotobuf_test)
 
-include(${CMAKE_SOURCE_DIR}/cmake/QtProtobufCommon.cmake)
+include(${QTPROTOBUF_CMAKE_DIR}/QtProtobufCommon.cmake)
 
 set(GENERATED_HEADERS
     complexmessage.h

+ 1 - 1
tests/test_qml/CMakeLists.txt

@@ -3,7 +3,7 @@ set(TARGET qtprotobuf_qml_test)
 find_package(Qt5 COMPONENTS Core Quick Network Test QuickTest REQUIRED)
 find_package(QtProtobufProject COMPONENTS QtProtobuf REQUIRED)
 
-include(${CMAKE_SOURCE_DIR}/cmake/QtProtobufCommon.cmake)
+include(${QTPROTOBUF_CMAKE_DIR}/QtProtobufCommon.cmake)
 
 file(GLOB SOURCES main.cpp)
 file(GLOB QML_FILES qml/tst_simple.qml)