aboutsummaryrefslogtreecommitdiff
path: root/libs/plugin_python/src/pybind11-qt/CMakeLists.txt
blob: cb742ad8f7ad527b785dc96681fa8ac43e935fff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
cmake_minimum_required(VERSION 3.16)

find_package(Qt6 REQUIRED COMPONENTS Core Widgets)

mo2_find_python_executable(PYTHON_EXE)

add_library(pybind11-qt STATIC)
mo2_configure_target(pybind11-qt
	NO_SOURCES
	WARNINGS 4
	EXTERNAL_WARNINGS 4
	AUTOMOC OFF
	TRANSLATIONS OFF
)
mo2_default_source_group()
target_sources(pybind11-qt
	PRIVATE
		./include/pybind11_qt/pybind11_qt_basic.h
		./include/pybind11_qt/pybind11_qt_containers.h
		./include/pybind11_qt/pybind11_qt_enums.h
		./include/pybind11_qt/pybind11_qt_holder.h
		./include/pybind11_qt/pybind11_qt_objects.h
		./include/pybind11_qt/pybind11_qt_qflags.h
		./include/pybind11_qt/pybind11_qt.h

		pybind11_qt_basic.cpp
		pybind11_qt_sip.cpp
		pybind11_qt_utils.cpp

)
mo2_target_sources(pybind11-qt
	FOLDER src/details
	PRIVATE
		./include/pybind11_qt/details/pybind11_qt_enum.h
		./include/pybind11_qt/details/pybind11_qt_qlist.h
		./include/pybind11_qt/details/pybind11_qt_qmap.h
		./include/pybind11_qt/details/pybind11_qt_sip.h
		./include/pybind11_qt/details/pybind11_qt_utils.h
)
target_link_libraries(pybind11-qt PUBLIC pybind11::pybind11 PRIVATE Qt6::Core Qt6::Widgets)
target_include_directories(pybind11-qt PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

# this is kind of broken but it only works with this...
target_compile_definitions(pybind11-qt PUBLIC QT_NO_KEYWORDS)

# we need sip.h for pybind11-qt
add_custom_target(PyQt6-siph DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/sip.h")
set_target_properties(PyQt6-siph PROPERTIES FOLDER autogen)
add_custom_command(
	OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/sip.h"
	COMMAND ${Python_EXECUTABLE} -m sipbuild.tools.module
		--sip-h
		--target-dir ${CMAKE_CURRENT_BINARY_DIR}
		PyQt${MO2_QT_VERSION_MAJOR}.sip
)
add_dependencies(pybind11-qt PyQt6-siph)

target_include_directories(pybind11-qt PRIVATE ${CMAKE_CURRENT_BINARY_DIR})

add_library(pybind11::qt ALIAS pybind11-qt)