| # SPDX-License-Identifier: LGPL-2.1-or-later | |
| if (PROJECT_NAME) | |
| set(IS_SUB_PROJECT TRUE) | |
| endif() | |
| if (NOT IS_SUB_PROJECT) | |
| project(FreeCAD_widgets) | |
| cmake_minimum_required(VERSION 3.2.0) | |
| set(CMAKE_INCLUDE_CURRENT_DIR ON) | |
| set(CMAKE_AUTOMOC ON) | |
| find_package(Qt${FREECAD_QT_MAJOR_VERSION} COMPONENTS Core Designer Widgets REQUIRED) | |
| endif() | |
| include_directories( | |
| SYSTEM | |
| ${Qt${FREECAD_QT_MAJOR_VERSION}Core_INCLUDE_DIRS} | |
| ${Qt${FREECAD_QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS} | |
| ${Qt${FREECAD_QT_MAJOR_VERSION}Designer_INCLUDE_DIRS} | |
| ) | |
| add_library(FreeCAD_widgets SHARED | |
| customwidgets.cpp | |
| customwidgets.h | |
| plugin.cpp | |
| plugin.h | |
| ) | |
| set(FreeCAD_widgets_LIBS | |
| ${Qt${FREECAD_QT_MAJOR_VERSION}Widgets_LIBRARIES} | |
| ${Qt${FREECAD_QT_MAJOR_VERSION}Designer_LIBRARIES} | |
| ) | |
| if(MSVC) | |
| list(APPEND FreeCAD_widgets_LIBS | |
| debug msvcrtd.lib | |
| debug msvcprtd.lib | |
| optimized msvcrt.lib | |
| optimized msvcprt.lib | |
| ) | |
| #Universal C runtime introduced in VS 2015 (cl version 19) | |
| if (NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19")) | |
| list(APPEND FreeCAD_widgets_LIBS | |
| debug vcruntimed.lib | |
| debug ucrtd.lib | |
| debug concrtd.lib | |
| optimized vcruntime.lib | |
| optimized ucrt.lib | |
| optimized concrt.lib | |
| ) | |
| endif() | |
| endif() | |
| target_link_libraries(FreeCAD_widgets PRIVATE ${FreeCAD_widgets_LIBS}) | |
| target_compile_options(FreeCAD_widgets PRIVATE ${COMPILE_OPTIONS}) | |
| # Get the install location of a plugin to determine the path to designer plguins | |
| get_target_property(QMAKE_EXECUTABLE Qt${FREECAD_QT_MAJOR_VERSION}::qmake LOCATION) | |
| execute_process(COMMAND ${QMAKE_EXECUTABLE} "-query" "QT_INSTALL_PLUGINS" RESULT_VARIABLE return_code OUTPUT_VARIABLE DEFAULT_QT_PLUGINS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) | |
| set(DESIGNER_PLUGIN_LOCATION ${DEFAULT_QT_PLUGINS_DIR}/designer CACHE PATH "Path where the plugin will be installed to") | |
| if (NOT IS_SUB_PROJECT) | |
| message(STATUS "Plugin will be installed to: ${DESIGNER_PLUGIN_LOCATION}") | |
| else() | |
| set (libFreeCAD_widgets "${CMAKE_SHARED_LIBRARY_PREFIX}FreeCAD_widgets${CMAKE_SHARED_LIBRARY_SUFFIX}" PARENT_SCOPE) | |
| endif() | |
| INSTALL(TARGETS FreeCAD_widgets | |
| RUNTIME DESTINATION ${DESIGNER_PLUGIN_LOCATION} | |
| LIBRARY DESTINATION ${DESIGNER_PLUGIN_LOCATION} | |
| ) | |