forked from loafle/openapi-generator-original
[cpp-qt-client] CMake build system improvements (#14210)
* checkpoint * rename template file * add nl * fix build
This commit is contained in:
parent
e8c739e771
commit
8d9816e193
@ -3,5 +3,6 @@ outputDir: samples/client/petstore/cpp-qt
|
|||||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/cpp-qt/petstore.yaml
|
inputSpec: modules/openapi-generator/src/test/resources/3_0/cpp-qt/petstore.yaml
|
||||||
templateDir: modules/openapi-generator/src/main/resources/cpp-qt-client
|
templateDir: modules/openapi-generator/src/main/resources/cpp-qt-client
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
packageName: CppQtPetstoreClient
|
||||||
cppNamespace: test_namespace
|
cppNamespace: test_namespace
|
||||||
modelNamePrefix: PFX
|
modelNamePrefix: PFX
|
||||||
|
@ -27,6 +27,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
|||||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||||
|modelNamePrefix|Prefix that will be prepended to all model names.| |OAI|
|
|modelNamePrefix|Prefix that will be prepended to all model names.| |OAI|
|
||||||
|optionalProjectFile|Generate client.pri.| |true|
|
|optionalProjectFile|Generate client.pri.| |true|
|
||||||
|
|packageName|C++ package (library) name.| |QtOpenAPIClient|
|
||||||
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|
||||||
|reservedWordPrefix|Prefix to prepend to reserved words in order to avoid conflicts| |r_|
|
|reservedWordPrefix|Prefix to prepend to reserved words in order to avoid conflicts| |r_|
|
||||||
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|
||||||
|
@ -31,6 +31,8 @@ import static org.openapitools.codegen.utils.StringUtils.*;
|
|||||||
|
|
||||||
public class CppQtClientCodegen extends CppQtAbstractCodegen implements CodegenConfig {
|
public class CppQtClientCodegen extends CppQtAbstractCodegen implements CodegenConfig {
|
||||||
public static final String OPTIONAL_PROJECT_FILE_DESC = "Generate client.pri.";
|
public static final String OPTIONAL_PROJECT_FILE_DESC = "Generate client.pri.";
|
||||||
|
public static final String DEFAULT_PACKAGE_NAME = "QtOpenAPIClient";
|
||||||
|
protected String packageName = "";
|
||||||
// source folder where to write the files
|
// source folder where to write the files
|
||||||
protected String sourceFolder = "client";
|
protected String sourceFolder = "client";
|
||||||
protected boolean optionalProjectFileFlag = true;
|
protected boolean optionalProjectFileFlag = true;
|
||||||
@ -89,7 +91,10 @@ public class CppQtClientCodegen extends CppQtAbstractCodegen implements CodegenC
|
|||||||
*/
|
*/
|
||||||
embeddedTemplateDir = templateDir = "cpp-qt-client";
|
embeddedTemplateDir = templateDir = "cpp-qt-client";
|
||||||
|
|
||||||
|
// CLI options
|
||||||
|
addOption(CodegenConstants.PACKAGE_NAME, "C++ package (library) name.", DEFAULT_PACKAGE_NAME);
|
||||||
addSwitch(CodegenConstants.OPTIONAL_PROJECT_FILE, OPTIONAL_PROJECT_FILE_DESC, this.optionalProjectFileFlag);
|
addSwitch(CodegenConstants.OPTIONAL_PROJECT_FILE, OPTIONAL_PROJECT_FILE_DESC, this.optionalProjectFileFlag);
|
||||||
|
|
||||||
supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder, PREFIX + "Helpers.h"));
|
supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder, PREFIX + "Helpers.h"));
|
||||||
supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder, PREFIX + "Helpers.cpp"));
|
supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder, PREFIX + "Helpers.cpp"));
|
||||||
supportingFiles.add(new SupportingFile("HttpRequest.h.mustache", sourceFolder, PREFIX + "HttpRequest.h"));
|
supportingFiles.add(new SupportingFile("HttpRequest.h.mustache", sourceFolder, PREFIX + "HttpRequest.h"));
|
||||||
@ -103,6 +108,7 @@ public class CppQtClientCodegen extends CppQtAbstractCodegen implements CodegenC
|
|||||||
supportingFiles.add(new SupportingFile("oauth.cpp.mustache", sourceFolder, PREFIX + "Oauth.cpp"));
|
supportingFiles.add(new SupportingFile("oauth.cpp.mustache", sourceFolder, PREFIX + "Oauth.cpp"));
|
||||||
supportingFiles.add(new SupportingFile("oauth.h.mustache", sourceFolder, PREFIX + "Oauth.h"));
|
supportingFiles.add(new SupportingFile("oauth.h.mustache", sourceFolder, PREFIX + "Oauth.h"));
|
||||||
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
|
supportingFiles.add(new SupportingFile("CMakeConfig.mustache", sourceFolder, "Config.cmake.in"));
|
||||||
supportingFiles.add(new SupportingFile("CMakeLists.txt.mustache", sourceFolder, "CMakeLists.txt"));
|
supportingFiles.add(new SupportingFile("CMakeLists.txt.mustache", sourceFolder, "CMakeLists.txt"));
|
||||||
if (optionalProjectFileFlag) {
|
if (optionalProjectFileFlag) {
|
||||||
supportingFiles.add(new SupportingFile("Project.mustache", sourceFolder, "client.pri"));
|
supportingFiles.add(new SupportingFile("Project.mustache", sourceFolder, "client.pri"));
|
||||||
@ -117,12 +123,16 @@ public class CppQtClientCodegen extends CppQtAbstractCodegen implements CodegenC
|
|||||||
public void processOpts() {
|
public void processOpts() {
|
||||||
super.processOpts();
|
super.processOpts();
|
||||||
|
|
||||||
|
packageName = (String) additionalProperties.getOrDefault(CodegenConstants.PACKAGE_NAME, DEFAULT_PACKAGE_NAME);
|
||||||
|
|
||||||
if (additionalProperties.containsKey(CodegenConstants.OPTIONAL_PROJECT_FILE)) {
|
if (additionalProperties.containsKey(CodegenConstants.OPTIONAL_PROJECT_FILE)) {
|
||||||
setOptionalProjectFileFlag(convertPropertyToBooleanAndWriteBack(CodegenConstants.OPTIONAL_PROJECT_FILE));
|
setOptionalProjectFileFlag(convertPropertyToBooleanAndWriteBack(CodegenConstants.OPTIONAL_PROJECT_FILE));
|
||||||
} else {
|
} else {
|
||||||
additionalProperties.put(CodegenConstants.OPTIONAL_PROJECT_FILE, optionalProjectFileFlag);
|
additionalProperties.put(CodegenConstants.OPTIONAL_PROJECT_FILE, optionalProjectFileFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName);
|
||||||
|
|
||||||
if (additionalProperties.containsKey("modelNamePrefix")) {
|
if (additionalProperties.containsKey("modelNamePrefix")) {
|
||||||
supportingFiles.clear();
|
supportingFiles.clear();
|
||||||
supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder, modelNamePrefix + "Helpers.h"));
|
supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder, modelNamePrefix + "Helpers.h"));
|
||||||
@ -138,6 +148,7 @@ public class CppQtClientCodegen extends CppQtAbstractCodegen implements CodegenC
|
|||||||
supportingFiles.add(new SupportingFile("oauth.cpp.mustache", sourceFolder, modelNamePrefix + "Oauth.cpp"));
|
supportingFiles.add(new SupportingFile("oauth.cpp.mustache", sourceFolder, modelNamePrefix + "Oauth.cpp"));
|
||||||
supportingFiles.add(new SupportingFile("oauth.h.mustache", sourceFolder, modelNamePrefix + "Oauth.h"));
|
supportingFiles.add(new SupportingFile("oauth.h.mustache", sourceFolder, modelNamePrefix + "Oauth.h"));
|
||||||
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
|
supportingFiles.add(new SupportingFile("CMakeConfig.mustache", sourceFolder, "Config.cmake.in"));
|
||||||
supportingFiles.add(new SupportingFile("CMakeLists.txt.mustache", sourceFolder, "CMakeLists.txt"));
|
supportingFiles.add(new SupportingFile("CMakeLists.txt.mustache", sourceFolder, "CMakeLists.txt"));
|
||||||
|
|
||||||
|
|
||||||
|
5
modules/openapi-generator/src/main/resources/cpp-qt-client/CMakeConfig.mustache
vendored
Normal file
5
modules/openapi-generator/src/main/resources/cpp-qt-client/CMakeConfig.mustache
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake)
|
||||||
|
|
||||||
|
check_required_components("@PROJECT_NAME@")
|
@ -1,47 +1,83 @@
|
|||||||
cmake_minimum_required(VERSION 3.2)
|
cmake_minimum_required(VERSION 3.2)
|
||||||
|
|
||||||
project(client)
|
project({{{packageName}}})
|
||||||
|
|
||||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
set(CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
if (MSVC)
|
if(NOT CMAKE_CXX_STANDARD)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
else ()
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
find_package(Qt5Core REQUIRED)
|
|
||||||
find_package(Qt5Network REQUIRED)
|
|
||||||
find_package(Qt5Gui REQUIRED){{#contentCompression}}
|
|
||||||
find_package(ZLIB REQUIRED){{/contentCompression}}
|
|
||||||
|
|
||||||
add_library(${PROJECT_NAME}
|
|
||||||
{{#models}}
|
|
||||||
{{#model}}
|
|
||||||
{{classname}}.cpp
|
|
||||||
{{/model}}
|
|
||||||
{{/models}}
|
|
||||||
{{#apiInfo}}
|
|
||||||
{{#apis}}
|
|
||||||
{{#operations}}
|
|
||||||
{{classname}}.cpp
|
|
||||||
{{/operations}}
|
|
||||||
{{/apis}}
|
|
||||||
{{/apiInfo}}
|
|
||||||
{{prefix}}Helpers.cpp
|
|
||||||
{{prefix}}HttpRequest.cpp
|
|
||||||
{{prefix}}HttpFileElement.cpp
|
|
||||||
{{prefix}}Oauth.cpp
|
|
||||||
)
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network Qt5::Gui{{#contentCompression}} ${ZLIB_LIBRARIES}{{/contentCompression}})
|
|
||||||
if(NOT APPLE)
|
|
||||||
find_package(OpenSSL REQUIRED)
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE ssl crypto)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_EXTENSIONS OFF)
|
endif()
|
||||||
|
|
||||||
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
|
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Network Gui)
|
||||||
|
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network Gui)
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
|
file(GLOB_RECURSE HEADER_FILES "*.h")
|
||||||
|
file(GLOB_RECURSE SOURCE_FILES "*.cpp")
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES})
|
||||||
|
|
||||||
|
target_compile_options(${PROJECT_NAME}
|
||||||
|
PRIVATE
|
||||||
|
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>>:
|
||||||
|
-Wall -Wno-unused-variable>
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(${PROJECT_NAME}
|
||||||
|
PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME}
|
||||||
|
PUBLIC
|
||||||
|
Qt${QT_VERSION_MAJOR}::Core
|
||||||
|
Qt${QT_VERSION_MAJOR}::Network
|
||||||
|
Qt${QT_VERSION_MAJOR}::Gui
|
||||||
|
{{#contentCompression}}
|
||||||
|
PRIVATE
|
||||||
|
${ZLIB_LIBRARIES}{{/contentCompression}}
|
||||||
|
)
|
||||||
|
|
||||||
|
if(NOT APPLE)
|
||||||
|
find_package(OpenSSL REQUIRED)
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE ssl crypto)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||||
|
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS ${PROJECT_NAME}
|
||||||
|
EXPORT ${PROJECT_NAME}Targets
|
||||||
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||||
|
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${HEADER_FILES}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
EXPORT ${PROJECT_NAME}Targets
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||||
|
)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
README.md
|
README.md
|
||||||
client/CMakeLists.txt
|
client/CMakeLists.txt
|
||||||
|
client/Config.cmake.in
|
||||||
client/PFXApiResponse.cpp
|
client/PFXApiResponse.cpp
|
||||||
client/PFXApiResponse.h
|
client/PFXApiResponse.h
|
||||||
client/PFXCategory.cpp
|
client/PFXCategory.cpp
|
||||||
|
@ -5,28 +5,16 @@ set(CMAKE_VERBOSE_MAKEFILE ON)
|
|||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable")
|
|
||||||
|
|
||||||
find_package(Qt5Core REQUIRED)
|
|
||||||
find_package(Qt5Network REQUIRED)
|
|
||||||
find_package(Qt5Test REQUIRED)
|
|
||||||
find_package(Qt5Gui REQUIRED)
|
|
||||||
|
|
||||||
include_directories(
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/client
|
|
||||||
)
|
|
||||||
|
|
||||||
add_subdirectory(client)
|
add_subdirectory(client)
|
||||||
|
|
||||||
|
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Test)
|
||||||
|
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME}
|
add_executable(${PROJECT_NAME}
|
||||||
PetStore/main.cpp
|
PetStore/main.cpp
|
||||||
PetStore/PetApiTests.cpp
|
PetStore/PetApiTests.cpp
|
||||||
PetStore/StoreApiTests.cpp
|
PetStore/StoreApiTests.cpp
|
||||||
PetStore/UserApiTests.cpp
|
PetStore/UserApiTests.cpp
|
||||||
)
|
)
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE client)
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network Qt5::Test Qt5::Gui)
|
|
||||||
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)
|
target_link_libraries(${PROJECT_NAME} PRIVATE CppQtPetstoreClient Qt${QT_VERSION_MAJOR}::Test)
|
||||||
|
@ -1,45 +1,81 @@
|
|||||||
cmake_minimum_required(VERSION 3.2)
|
cmake_minimum_required(VERSION 3.2)
|
||||||
|
|
||||||
project(client)
|
project(CppQtPetstoreClient)
|
||||||
|
|
||||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
set(CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
if (MSVC)
|
if(NOT CMAKE_CXX_STANDARD)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
else ()
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-unused-variable")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
find_package(Qt5Core REQUIRED)
|
|
||||||
find_package(Qt5Network REQUIRED)
|
|
||||||
find_package(Qt5Gui REQUIRED)
|
|
||||||
|
|
||||||
add_library(${PROJECT_NAME}
|
|
||||||
PFXApiResponse.cpp
|
|
||||||
PFXCategory.cpp
|
|
||||||
PFXOrder.cpp
|
|
||||||
PFXPet.cpp
|
|
||||||
PFXTag.cpp
|
|
||||||
PFXTestAnyType.cpp
|
|
||||||
PFXUser.cpp
|
|
||||||
PFXPetApi.cpp
|
|
||||||
PFXPrimitivesApi.cpp
|
|
||||||
PFXStoreApi.cpp
|
|
||||||
PFXUserApi.cpp
|
|
||||||
PFXHelpers.cpp
|
|
||||||
PFXHttpRequest.cpp
|
|
||||||
PFXHttpFileElement.cpp
|
|
||||||
PFXOauth.cpp
|
|
||||||
)
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network Qt5::Gui)
|
|
||||||
if(NOT APPLE)
|
|
||||||
find_package(OpenSSL REQUIRED)
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE ssl crypto)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_EXTENSIONS OFF)
|
endif()
|
||||||
|
|
||||||
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
|
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Network Gui)
|
||||||
|
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network Gui)
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
|
file(GLOB_RECURSE HEADER_FILES "*.h")
|
||||||
|
file(GLOB_RECURSE SOURCE_FILES "*.cpp")
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES})
|
||||||
|
|
||||||
|
target_compile_options(${PROJECT_NAME}
|
||||||
|
PRIVATE
|
||||||
|
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>>:
|
||||||
|
-Wall -Wno-unused-variable>
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(${PROJECT_NAME}
|
||||||
|
PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME}
|
||||||
|
PUBLIC
|
||||||
|
Qt${QT_VERSION_MAJOR}::Core
|
||||||
|
Qt${QT_VERSION_MAJOR}::Network
|
||||||
|
Qt${QT_VERSION_MAJOR}::Gui
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
if(NOT APPLE)
|
||||||
|
find_package(OpenSSL REQUIRED)
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE ssl crypto)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||||
|
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS ${PROJECT_NAME}
|
||||||
|
EXPORT ${PROJECT_NAME}Targets
|
||||||
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||||
|
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${HEADER_FILES}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
EXPORT ${PROJECT_NAME}Targets
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||||
|
)
|
||||||
|
5
samples/client/petstore/cpp-qt/client/Config.cmake.in
Normal file
5
samples/client/petstore/cpp-qt/client/Config.cmake.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake)
|
||||||
|
|
||||||
|
check_required_components("@PROJECT_NAME@")
|
Loading…
x
Reference in New Issue
Block a user