-
Notifications
You must be signed in to change notification settings - Fork 95
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
feihong
committed
Nov 26, 2024
1 parent
8e5581b
commit e0291e7
Showing
5 changed files
with
220 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
cmake_minimum_required(VERSION 3.27) | ||
|
||
project(PythonQt LANGUAGES CXX VERSION 3.5.6) | ||
|
||
set(CMAKE_CXX_STANDARD 11) | ||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||
|
||
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) | ||
find_package(Python3 COMPONENTS Development) | ||
|
||
set(PYTHONQT_SUFFIX Qt${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}-Python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}) | ||
|
||
|
||
if(${QT_VERSION_MAJOR} VERSION_EQUAL 5) | ||
if(${QT_VERSION_MINOR} VERSION_LESS 3) | ||
set(PYTHONQT_GENERATED_PATH ${CMAKE_CURRENT_LIST_DIR}/generated_cpp_50) | ||
elseif(${QT_VERSION_MINOR} VERSION_LESS 6) | ||
set(PYTHONQT_GENERATED_PATH ${CMAKE_CURRENT_LIST_DIR}/generated_cpp_54) | ||
elseif(${QT_VERSION_MINOR} VERSION_LESS 11) | ||
set(PYTHONQT_GENERATED_PATH ${CMAKE_CURRENT_LIST_DIR}/generated_cpp_56) | ||
elseif(${QT_VERSION_MINOR} VERSION_LESS 15) | ||
set(PYTHONQT_GENERATED_PATH ${CMAKE_CURRENT_LIST_DIR}/generated_cpp_511) | ||
else() | ||
set(PYTHONQT_GENERATED_PATH ${CMAKE_CURRENT_LIST_DIR}/generated_cpp_515) | ||
endif() | ||
# elseif(${QT_VERSION_MAJOR} VERSION_EQUAL 6) | ||
else() | ||
message(FATAL "No generated sources exist for Qt${QT_VERSION}") | ||
endif() | ||
|
||
add_subdirectory(src) | ||
# add_subdirectory(generator) | ||
add_subdirectory(extensions) | ||
add_subdirectory(tests) | ||
# add_subdirectory(examples) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
add_subdirectory(PythonQt_QtAll) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
project(QtAll LANGUAGES CXX) | ||
|
||
set(CMAKE_AUTOMOC ON) | ||
|
||
file(GLOB SOURCES *.h *.cpp) | ||
|
||
if(BUILD_SHARED_LIBS) | ||
add_library(${PROJECT_NAME} SHARED) | ||
else() | ||
add_library(${PROJECT_NAME} STATIC) | ||
endif() | ||
|
||
target_sources(${PROJECT_NAME} PRIVATE | ||
${SOURCES} | ||
${GENERATE_SOURCES} | ||
) | ||
|
||
target_link_libraries(${PROJECT_NAME} PUBLIC | ||
Core | ||
) | ||
|
||
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR}) | ||
|
||
target_compile_definitions(${PROJECT_NAME} PRIVATE PYTHONQT_QTALL_EXPORTS) | ||
|
||
list(APPEND QTMODULES Core Gui Svg Sql Network OpenGL Xml XmlPatterns Multimedia Qml Quick UiTools WebEngineWidgets WebKit) | ||
|
||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS ${QTMODULES}) | ||
|
||
foreach(QTMODULE IN LISTS QTMODULES) | ||
if(NOT TARGET Qt${QT_VERSION_MAJOR}::${QTMODULE}) | ||
continue() | ||
endif() | ||
|
||
string(TOLOWER ${QTMODULE} qtmodule) | ||
file(GLOB GENERATE_SOURCES | ||
${PYTHONQT_GENERATED_PATH}/com_trolltech_qt_${qtmodule}/*.h | ||
${PYTHONQT_GENERATED_PATH}/com_trolltech_qt_${qtmodule}/*.cpp | ||
) | ||
target_sources(${PROJECT_NAME} PRIVATE ${GENERATE_SOURCES}) | ||
target_link_libraries(${PROJECT_NAME} PUBLIC Qt${QT_VERSION_MAJOR}::${QTMODULE}) | ||
|
||
string(TOUPPER ${QTMODULE} qtmodule) | ||
target_compile_definitions(${PROJECT_NAME} PRIVATE PYTHONQT_WITH_${qtmodule}) | ||
endforeach() | ||
|
||
if(TARGET Qt${QT_VERSION_MAJOR}::Gui) | ||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets PrintSupport REQUIRED) | ||
target_link_libraries(${PROJECT_NAME} PUBLIC | ||
Qt${QT_VERSION_MAJOR}::Widgets | ||
Qt${QT_VERSION_MAJOR}::PrintSupport | ||
) | ||
endif() | ||
|
||
if(TARGET Qt${QT_VERSION_MAJOR}::Svg AND QT_VERSION_MAJOR VERSION_GREATER_EQUAL 6) | ||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS SvgWidgets REQUIRED) | ||
target_link_libraries(${PROJECT_NAME} PUBLIC | ||
Qt${QT_VERSION_MAJOR}::SvgWidgets | ||
) | ||
endif() | ||
|
||
if(TARGET Qt${QT_VERSION_MAJOR}::Multimedia) | ||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS MultimediaWidgets REQUIRED) | ||
target_link_libraries(${PROJECT_NAME} PUBLIC | ||
Qt${QT_VERSION_MAJOR}::MultimediaWidgets | ||
) | ||
endif() | ||
|
||
if(TARGET Qt${QT_VERSION_MAJOR}::Quick) | ||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS QuickWidgets REQUIRED) | ||
target_link_libraries(${PROJECT_NAME} PUBLIC | ||
Qt${QT_VERSION_MAJOR}::QuickWidgets | ||
) | ||
endif() | ||
|
||
if(TARGET Qt${QT_VERSION_MAJOR}::WebKit) | ||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS WebKitWidgets REQUIRED) | ||
target_link_libraries(${PROJECT_NAME} PUBLIC | ||
Qt${QT_VERSION_MAJOR}::WebKitWidgets | ||
) | ||
endif() | ||
|
||
file(GLOB PUBLIC_HEADER *.h) | ||
|
||
set_target_properties(${PROJECT_NAME} PROPERTIES | ||
OUTPUT_NAME PythonQt-QtAll-${PYTHONQT_SUFFIX} | ||
PUBLIC_HEADER "${PUBLIC_HEADER}" | ||
) | ||
|
||
if(MSVC) | ||
target_compile_options(${PROJECT_NAME} PRIVATE "/bigobj") | ||
elseif(MINGW) | ||
target_compile_options(${PROJECT_NAME} PRIVATE "-Wa,-mbig-obj") | ||
endif() | ||
|
||
include(GNUInstallDirs) | ||
install(TARGETS ${PROJECT_NAME} | ||
BUNDLE DESTINATION . | ||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | ||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
project(Core LANGUAGES CXX) | ||
|
||
set(CMAKE_AUTOMOC ON) | ||
|
||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Widgets REQUIRED) | ||
find_package(Python3 COMPONENTS Development REQUIRED) | ||
|
||
file(GLOB SOURCES *.h *.cpp) | ||
|
||
if(BUILD_SHARED_LIBS) | ||
add_library(${PROJECT_NAME} SHARED) | ||
else() | ||
add_library(${PROJECT_NAME} STATIC) | ||
endif() | ||
|
||
file(GLOB GENERATE_SOURCES | ||
${PYTHONQT_GENERATED_PATH}/com_trolltech_qt_core_builtin/*.h | ||
${PYTHONQT_GENERATED_PATH}/com_trolltech_qt_core_builtin/*.cpp | ||
${PYTHONQT_GENERATED_PATH}/com_trolltech_qt_gui_builtin/*.h | ||
${PYTHONQT_GENERATED_PATH}/com_trolltech_qt_gui_builtin/*.cpp | ||
) | ||
|
||
target_sources(${PROJECT_NAME} PRIVATE | ||
${SOURCES} | ||
${GENERATE_SOURCES} | ||
) | ||
|
||
file(GLOB PUBLIC_HEADER *.h) | ||
|
||
set_target_properties(${PROJECT_NAME} PROPERTIES | ||
OUTPUT_NAME PythonQt-${PYTHONQT_SUFFIX} | ||
PUBLIC_HEADER "${PUBLIC_HEADER}" | ||
) | ||
|
||
target_link_libraries(${PROJECT_NAME} PUBLIC | ||
Qt${QT_VERSION_MAJOR}::Core | ||
Qt${QT_VERSION_MAJOR}::CorePrivate | ||
Qt${QT_VERSION_MAJOR}::Widgets | ||
Python3::Python | ||
) | ||
|
||
target_compile_definitions(${PROJECT_NAME} PRIVATE PYTHONQT_EXPORTS PYTHONQT_CATCH_ALL_EXCEPTIONS) | ||
|
||
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR}) | ||
|
||
if(MSVC) | ||
target_compile_options(${PROJECT_NAME} PRIVATE "/bigobj") | ||
elseif(MINGW) | ||
target_compile_options(${PROJECT_NAME} PRIVATE "-Wa,-mbig-obj") | ||
endif() | ||
|
||
include(GNUInstallDirs) | ||
install(TARGETS ${PROJECT_NAME} | ||
BUNDLE DESTINATION . | ||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | ||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
project(tests LANGUAGES CXX) | ||
|
||
set(CMAKE_AUTOMOC ON) | ||
|
||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Test REQUIRED) | ||
|
||
file(GLOB SOURCES *.h *.cpp) | ||
|
||
add_executable(${PROJECT_NAME}) | ||
|
||
target_sources(${PROJECT_NAME} PRIVATE | ||
${SOURCES} | ||
) | ||
|
||
target_link_libraries(${PROJECT_NAME} PRIVATE | ||
Qt${QT_VERSION_MAJOR}::Widgets | ||
Qt${QT_VERSION_MAJOR}::Test | ||
Core | ||
QtAll | ||
) | ||
|
||
add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME}) |