Skip to content

Commit bfaec20

Browse files
committed
ENH: Add configure package options for PythonQt
Configure so that other builds can find PythonQt with find_package
1 parent 97346f2 commit bfaec20

File tree

2 files changed

+49
-7
lines changed

2 files changed

+49
-7
lines changed

src/CMakeLists.txt

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
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

55
set(CMAKE_AUTOMOC ON)
66

@@ -92,7 +92,13 @@ target_link_libraries(${PROJECT_NAME} PUBLIC
9292

9393
target_compile_definitions(${PROJECT_NAME} PRIVATE PYTHONQT_EXPORTS PYTHONQT_CATCH_ALL_EXCEPTIONS)
9494

95-
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR})
95+
target_include_directories(${PROJECT_NAME} PUBLIC
96+
INTERFACE
97+
# Use headers in the build tree when configuring/running CMake here:
98+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
99+
# Use headers in the install tree when someone does `find_package(PythonQt)`:
100+
$<INSTALL_INTERFACE:include/PythonQt>
101+
)
96102

97103
if(MSVC)
98104
target_compile_options(${PROJECT_NAME} PRIVATE "/bigobj")
@@ -125,9 +131,42 @@ include(GNUInstallDirs)
125131
# Install library (on windows, put the dll in 'bin' and the archive in 'lib')
126132

127133
install(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}
134+
EXPORT ${PROJECT_NAME}Targets
135+
BUNDLE DESTINATION ${CMAKE_INSTALL_PREFIX}
136+
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PythonQt_INSTALL_LIBRARY_DIR}
137+
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/${PythonQt_INSTALL_ARCHIVE_DIR}
138+
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/${PythonQt_INSTALL_RUNTIME_DIR}
139+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/${PythonQt_INSTALL_INCLUDE_DIR}
140+
)
141+
142+
143+
#-----------------------------------------------------------------------------
144+
# Configure so that other builds can find PythonQt with find_package
145+
include(CMakePackageConfigHelpers)
146+
147+
# Generate PythonQtConfigVersion.cmake
148+
write_basic_package_version_file(
149+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
150+
VERSION ${PROJECT_NAME}_VERSION}
151+
COMPATIBILITY AnyNewerVersion
152+
)
153+
154+
# Install the export target
155+
install(EXPORT ${PROJECT_NAME}Targets
156+
FILE ${PROJECT_NAME}Targets.cmake
157+
NAMESPACE ${PROJECT_NAME}::
158+
DESTINATION lib/cmake/${PROJECT_NAME}
159+
)
160+
161+
# Generate and install PythonQtConfig.cmake
162+
configure_package_config_file(
163+
"${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in"
164+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
165+
INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}
166+
)
167+
168+
install(FILES
169+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
170+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
171+
DESTINATION lib/cmake/${PROJECT_NAME}
133172
)

src/PythonQtConfig.cmake.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/PythonQtTargets.cmake")

0 commit comments

Comments
 (0)