-
-
Notifications
You must be signed in to change notification settings - Fork 7k
[C++] [Qt5] Add generation of cmake files to qt5 client #4133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please test my ideas (especially that one with target_link_libraries
), if they work on your system (they should, but you never know with CMake :D).
modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
Outdated
Show resolved
Hide resolved
modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
Outdated
Show resolved
Hide resolved
modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
Outdated
Show resolved
Hide resolved
modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
Outdated
Show resolved
Hide resolved
modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
Outdated
Show resolved
Hide resolved
modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
Show resolved
Hide resolved
5c8dcfa
to
525e09e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CMake is full of quirks and can be confusing, so excuse me for my pickiness 😀
Here's a diff of changes I'd do, in case any of my comments is vague. It should build fine (I have tested on my PC).
diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
index bf64eccb39..c53100cca6 100644
--- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
+++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
@@ -5,7 +5,7 @@ set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++14 -Wall -Wno-unused-variable")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable")
find_package(Qt5Core REQUIRED)
find_package(Qt5Network REQUIRED)
@@ -14,16 +14,11 @@ file(GLOB SRCS
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
)
-include_directories(
- ${Qt5Core_INCLUDE_DIRS}
- ${Qt5Network_INCLUDE_DIRS}
-)
-
add_library(${PROJECT_NAME} ${SRCS})
-target_link_libraries(${PROJECT_NAME} PRIVATE Qt5Core Qt5Network ssl crypto)
+target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network ssl crypto)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
-set_property(TARGET ${PROJECT_NAME} PROPERTY CMAKE_CXX_EXTENSIONS OFF)
+set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_EXTENSIONS OFF)
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
diff --git a/samples/client/petstore/cpp-qt5/CMakeLists.txt b/samples/client/petstore/cpp-qt5/CMakeLists.txt
index e7aceb9481..50df45cb18 100644
--- a/samples/client/petstore/cpp-qt5/CMakeLists.txt
+++ b/samples/client/petstore/cpp-qt5/CMakeLists.txt
@@ -5,7 +5,7 @@ set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++14 -Wall -Wno-unused-variable")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable")
find_package(Qt5Core REQUIRED)
find_package(Qt5Network REQUIRED)
@@ -15,17 +15,11 @@ file(GLOB SRCS
${CMAKE_CURRENT_SOURCE_DIR}/PetStore/*.cpp
)
-include_directories(
- ${Qt5Core_INCLUDE_DIRS}
- ${Qt5Network_INCLUDE_DIRS}
- ${Qt5Test_INCLUDE_DIRS}
- ${CMAKE_CURRENT_SOURCE_DIR}/client
-)
-
add_subdirectory(client)
add_executable(${PROJECT_NAME} ${SRCS})
-target_link_libraries(${PROJECT_NAME} PRIVATE Qt5Core Qt5Network Qt5Test ssl crypto client)
+target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network Qt5::Test ssl crypto client)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
+set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_EXTENSIONS OFF)
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
diff --git a/samples/client/petstore/cpp-qt5/client/CMakeLists.txt b/samples/client/petstore/cpp-qt5/client/CMakeLists.txt
index bf64eccb39..c53100cca6 100644
--- a/samples/client/petstore/cpp-qt5/client/CMakeLists.txt
+++ b/samples/client/petstore/cpp-qt5/client/CMakeLists.txt
@@ -5,7 +5,7 @@ set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++14 -Wall -Wno-unused-variable")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable")
find_package(Qt5Core REQUIRED)
find_package(Qt5Network REQUIRED)
@@ -14,16 +14,11 @@ file(GLOB SRCS
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
)
-include_directories(
- ${Qt5Core_INCLUDE_DIRS}
- ${Qt5Network_INCLUDE_DIRS}
-)
-
add_library(${PROJECT_NAME} ${SRCS})
-target_link_libraries(${PROJECT_NAME} PRIVATE Qt5Core Qt5Network ssl crypto)
+target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network ssl crypto)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
-set_property(TARGET ${PROJECT_NAME} PROPERTY CMAKE_CXX_EXTENSIONS OFF)
+set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_EXTENSIONS OFF)
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
Outdated
Show resolved
Hide resolved
modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
Outdated
Show resolved
Hide resolved
modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great 😀
Many thanks for the review. |
PR checklist
./bin/
to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh
,./bin/openapi3/{LANG}-petstore.sh
if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\
. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.master
,4.1.x
,5.0.x
. Default:master
.Description of the PR
Changes:
Add
CMakelists.txt
file for building withcmake
@stkrwork @ravinikam @muttleyxd @MartinDelille