Skip to content

Commit 275a155

Browse files
committed
Fix static build for well-known types
- Migrate to OBJECT library for generated code - Cleanup cmake procedures Fixes: #113
1 parent 1d85fab commit 275a155

File tree

6 files changed

+20
-5
lines changed

6 files changed

+20
-5
lines changed

cmake/QtProtobufGen.cmake

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ function(qtprotobuf_generate)
143143

144144
add_custom_target(${GEN_TARGET} DEPENDS ${GENERATED_SOURCES_FULL} ${GENERATED_HEADERS_FULL} ${qtprotobuf_generate_PROTO_FILES})
145145

146-
add_library(${GENERATED_TARGET_NAME} ${GENERATED_SOURCES_FULL} ${MOC_SOURCES})
146+
add_library(${GENERATED_TARGET_NAME} OBJECT ${GENERATED_SOURCES_FULL} ${MOC_SOURCES})
147147
add_dependencies(${GENERATED_TARGET_NAME} ${GEN_TARGET})
148148
set_target_properties(${GENERATED_TARGET_NAME} PROPERTIES PUBLIC_HEADER "${GENERATED_HEADERS_FULL}")
149149

@@ -165,6 +165,7 @@ function(qtprotobuf_generate)
165165

166166
#Automatically link whole static library to specified in parameters target
167167
if(DEFINED qtprotobuf_generate_TARGET)
168-
qtprotobuf_link_archive(${qtprotobuf_generate_TARGET} ${GENERATED_TARGET_NAME})
168+
target_sources(${qtprotobuf_generate_TARGET} PRIVATE $<TARGET_OBJECTS:${GENERATED_TARGET_NAME}>)
169+
target_include_directories(${qtprotobuf_generate_TARGET} PRIVATE $<TARGET_PROPERTY:${GENERATED_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
169170
endif()
170171
endfunction()

examples/addressbookserver/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ set_source_files_properties(${GENERATED_SOURCES} PROPERTIES GENERATED TRUE)
1010
add_executable(${TARGET} main.cpp ${GENERATED_SOURCES})
1111
target_include_directories(${TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
1212

13+
if(UNIX)
14+
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
15+
# using GCC
16+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=array-bounds")
17+
endif()
18+
endif()
19+
1320
file(GLOB PROTO_FILES ABSOLUTE ${CMAKE_CURRENT_SOURCE_DIR}/../addressbook/proto/*.proto)
1421
protobuf_generate_all(TARGET ${TARGET}
1522
GENERATED_SOURCES ${GENERATED_SOURCES}

examples/simplechatserver/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ set_source_files_properties(${GENERATED_SOURCES} PROPERTIES GENERATED TRUE)
1010
add_executable(${TARGET} main.cpp ${GENERATED_SOURCES})
1111
target_include_directories(${TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
1212

13+
if(UNIX)
14+
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
15+
# using GCC
16+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=array-bounds")
17+
endif()
18+
endif()
19+
1320
file(GLOB PROTO_FILES ABSOLUTE ${CMAKE_CURRENT_SOURCE_DIR}/../simplechat/proto/*.proto)
1421
protobuf_generate_all(TARGET ${TARGET}
1522
GENERATED_SOURCES ${GENERATED_SOURCES}

src/wellknowntypes/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ function(add_wellknowntype TYPENAME)
4444
endforeach()
4545
endfunction()
4646

47-
if(QT_PROTOBUF_STATIC AND NOT WIN32)
47+
if(QT_PROTOBUF_STATIC)
4848
add_library(${TARGET} STATIC ${SOURCES})
4949
else()
5050
add_library(${TARGET} SHARED ${SOURCES})

tests/test_qml/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ if(TARGET QtProtobufProject::QtProtobufWellKnownTypes)
1515
target_link_libraries(${TARGET} PRIVATE QtProtobufProject::QtProtobufWellKnownTypes)
1616
endif()
1717

18-
qtprotobuf_link_archive(${TARGET} qtprotobuf_test_qtprotobuf_gen)
18+
target_sources(${TARGET} PRIVATE $<TARGET_OBJECTS:qtprotobuf_test_qtprotobuf_gen>)
19+
target_include_directories(${TARGET} PRIVATE $<TARGET_PROPERTY:qtprotobuf_test_qtprotobuf_gen,INTERFACE_INCLUDE_DIRECTORIES>)
1920

2021
add_target_qml(TARGET ${TARGET} QML_FILES ${QML_FILES})
2122
add_target_windeployqt(TARGET ${TARGET} QML_DIR ${CMAKE_CURRENT_SOURCE_DIR}/qml)

tests/test_qprotobuf_serializer_plugin/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
1717

1818
add_executable(${TARGET} ${SOURCES})
1919
target_link_libraries(${TARGET} PRIVATE gtest_main gtest ${QT_PROTOBUF_PROJECT}::QtProtobuf ${QT_PROTOBUF_PROJECT}::QtGrpc Qt5::Core Qt5::Test Qt5::Network ${CMAKE_THREAD_LIBS_INIT})
20-
qtprotobuf_link_archive(${TARGET} qtprotobuf_test_qtprotobuf_gen)
2120
add_target_windeployqt(TARGET ${TARGET}
2221
QML_DIR ${CMAKE_CURRENT_SOURCE_DIR})
2322

0 commit comments

Comments
 (0)