11# This is the actual package to be installed
22# PythonQtParent project contains all compontents
3- project (PythonQt LANGUAGES CXX)
3+ project (PythonQt LANGUAGES CXX VERSION 3.5.6 )
44
55set (CMAKE_AUTOMOC ON )
66
@@ -39,12 +39,6 @@ set(Core_SOURCES
3939 PythonQtStdOut.cpp
4040 PythonQtThreadSupport.cpp
4141)
42- target_sources (${PROJECT_NAME} PRIVATE
43- ${Core_SOURCES}
44- ${PYTHONQT_WRAPPER_CORE_BUILTIN_SOURCES}
45- ${PYTHONQT_WRAPPER_GUI_BUILTIN_SOURCES}
46- )
47- unset (Core_SOURCES)
4842
4943set (Core_PUBLIC_HEADER
5044 PythonQt.h
@@ -75,11 +69,18 @@ set(Core_PUBLIC_HEADER
7569 PythonQtBoolResult.h
7670 PythonQtThreadSupport.h
7771)
78- set_target_properties (${PROJECT_NAME} PROPERTIES
79- OUTPUT_NAME PythonQt-${PYTHONQT_SUFFIX}
80- PUBLIC_HEADER ${Core_PUBLIC_HEADER}
81- )
82- unset (Core_PUBLIC_HEADER)
72+ target_sources (${PROJECT_NAME} PRIVATE
73+ ${Core_SOURCES}
74+ ${PYTHONQT_WRAPPER_CORE_BUILTIN_SOURCES}
75+ ${PYTHONQT_WRAPPER_GUI_BUILTIN_SOURCES}
76+ )
77+
78+ foreach ( header ${Core_PUBLIC_HEADER} )
79+ set_target_properties (${PROJECT_NAME} PROPERTIES
80+ # OUTPUT_NAME ${PROJECT_NAME}Targets #PythonQt-${PYTHONQT_SUFFIX}
81+ PUBLIC_HEADER ${header}
82+ )
83+ endforeach ()
8384
8485add_dependencies (${PROJECT_NAME} PythonQtWrapper)
8586
@@ -92,7 +93,13 @@ target_link_libraries(${PROJECT_NAME} PUBLIC
9293
9394target_compile_definitions (${PROJECT_NAME} PRIVATE PYTHONQT_EXPORTS PYTHONQT_CATCH_ALL_EXCEPTIONS)
9495
95- target_include_directories (${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR} )
96+ target_include_directories (${PROJECT_NAME} PUBLIC
97+ INTERFACE
98+ # Use headers in the build tree when configuring/running CMake here:
99+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /src>
100+ # Use headers in the install tree when someone does `find_package(PythonQt)`:
101+ $<INSTALL_INTERFACE:include /PythonQt>
102+ )
96103
97104if (MSVC )
98105 target_compile_options (${PROJECT_NAME} PRIVATE "/bigobj" )
@@ -125,9 +132,47 @@ include(GNUInstallDirs)
125132# Install library (on windows, put the dll in 'bin' and the archive in 'lib')
126133
127134install (TARGETS ${PROJECT_NAME}
128- BUNDLE DESTINATION .
129- LIBRARY DESTINATION ${PythonQt_INSTALL_LIBRARY_DIR}
130- ARCHIVE DESTINATION ${PythonQt_INSTALL_ARCHIVE_DIR}
131- RUNTIME DESTINATION ${PythonQt_INSTALL_RUNTIME_DIR}
132- PUBLIC_HEADER DESTINATION ${PythonQt_INSTALL_INCLUDE_DIR}
135+ EXPORT ${PROJECT_NAME} Targets
136+ BUNDLE DESTINATION ${CMAKE_INSTALL_PREFIX}
137+ LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX} /${PythonQt_INSTALL_LIBRARY_DIR}
138+ ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX} /${PythonQt_INSTALL_ARCHIVE_DIR}
139+ RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX} /${PythonQt_INSTALL_RUNTIME_DIR}
140+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX} /${PythonQt_INSTALL_INCLUDE_DIR}
141+ )
142+
143+ install (FILES
144+ ${Core_PUBLIC_HEADER}
145+ DESTINATION ${CMAKE_INSTALL_PREFIX} /${PythonQt_INSTALL_INCLUDE_DIR}
146+ )
147+
148+
149+ #-----------------------------------------------------------------------------
150+ # Configure so that other builds can find PythonQt with find_package
151+ include (CMakePackageConfigHelpers)
152+
153+ # Generate PythonQtConfigVersion.cmake
154+ write_basic_package_version_file(
155+ "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} ConfigVersion.cmake"
156+ VERSION ${PROJECT_NAME} _VERSION}
157+ COMPATIBILITY AnyNewerVersion
158+ )
159+
160+ # Install the export target
161+ install (EXPORT ${PROJECT_NAME} Targets
162+ FILE ${PROJECT_NAME} Targets.cmake
163+ NAMESPACE ${PROJECT_NAME} ::
164+ DESTINATION lib/cmake/${PROJECT_NAME}
165+ )
166+
167+ # Generate and install PythonQtConfig.cmake
168+ configure_package_config_file(
169+ "${CMAKE_CURRENT_SOURCE_DIR} /${PROJECT_NAME} Config.cmake.in"
170+ "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Config.cmake"
171+ INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}
172+ )
173+
174+ install (FILES
175+ "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Config.cmake"
176+ "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} ConfigVersion.cmake"
177+ DESTINATION lib/cmake/${PROJECT_NAME}
133178)
0 commit comments