mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
- Migrates legacy text-based FILES, PACKAGES, and EXTERNLIB configuration files to proper CMake format (.cmake extensions) - Updates CMakeLists.txt files to use modern CMake practices with explicit configurations and target-specific definitions - Modifies the qt_macro.cmake to work with the new CMake variable-based file management system
132 lines
4.7 KiB
CMake
132 lines
4.7 KiB
CMake
#qt
|
|
|
|
macro (FIND_QT_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
|
|
|
|
if ("${3RDPARTY_QT_DIR}" STREQUAL "")
|
|
message (FATAL_ERROR "Empty Qt dir")
|
|
endif()
|
|
|
|
if (${Qt5_FOUND})
|
|
#message (STATUS "Qt5 cmake configuration")
|
|
|
|
set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}" "${Qt5Quick_INCLUDE_DIRS}" "${Qt5Xml_INCLUDE_DIRS}")
|
|
set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}")
|
|
set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}")
|
|
|
|
# processing *.ts files to generate *.qm
|
|
find_package(Qt5LinguistTools)
|
|
get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease LOCATION)
|
|
mark_as_advanced(QT_LRELEASE_EXECUTABLE)
|
|
|
|
GET_FILENAME_COMPONENT(QT_BINARY_DIR ${QT_LRELEASE_EXECUTABLE} DIRECTORY)
|
|
MARK_AS_ADVANCED(QT_BINARY_DIR)
|
|
else()
|
|
#message (STATUS "Qt4 cmake configuration")
|
|
set(PROJECT_INCLUDES ${QT_INCLUDES})
|
|
if (WIN32)
|
|
set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/QtCored4.lib;${3RDPARTY_QT_DIR}/lib/QtGuid4.lib;${3RDPARTY_QT_DIR}/lib/QtXmld4.lib")
|
|
set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/QtCore4.lib;${3RDPARTY_QT_DIR}/lib/QtGui4.lib;${3RDPARTY_QT_DIR}/lib/QtXml4.lib")
|
|
else()
|
|
set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so")
|
|
set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so")
|
|
endif(WIN32)
|
|
find_program(QT_LRELEASE_EXECUTABLE lrelease)
|
|
endif()
|
|
endmacro()
|
|
|
|
|
|
macro (FIND_AND_WRAP_MOC_FILES HEADER_FILES GENERATED_MOC_FILES)
|
|
set (GENERATED_MOC_FILES "")
|
|
foreach (FILE ${HEADER_FILES})
|
|
# processing only files where Q_OBJECT exists
|
|
file(STRINGS "${FILE}" LINES REGEX "Q_OBJECT")
|
|
if(LINES)
|
|
unset (MOC_FILE)
|
|
if (${Qt5_FOUND})
|
|
qt5_wrap_cpp(MOC_FILE ${FILE})
|
|
else()
|
|
qt4_wrap_cpp(MOC_FILE ${FILE})
|
|
endif()
|
|
#message (STATUS "... Info: next MOC file ${MOC_FILE}")
|
|
list(APPEND ${GENERATED_MOC_FILES} ${MOC_FILE})
|
|
endif(LINES)
|
|
endforeach (FILE)
|
|
|
|
endmacro()
|
|
|
|
macro (FIND_AND_WRAP_RESOURCE_FILE RESOURCE_FILE_NAME RCC_FILES)
|
|
if(EXISTS "${RESOURCE_FILE_NAME}")
|
|
if (${Qt5_FOUND})
|
|
qt5_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
|
|
else()
|
|
qt4_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
|
|
# suppress some GCC warnings coming from source files generated from .qrc resources
|
|
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
|
|
macro (FIND_AND_WRAP_TS_FILE RESOURCE_FILE_NAME TARGET_FOLDER QM_FILES)
|
|
if(EXISTS "${RESOURCE_FILE_NAME}")
|
|
if (${Qt5_FOUND})
|
|
qt5_add_translation(QM_FILES "${RESOURCE_FILE_NAME}")
|
|
else()
|
|
qt4_add_translation(QM_FILES "${RESOURCE_FILE_NAME}")
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
|
|
macro (FIND_AND_INSTALL_QT_RESOURCES OCCT_PACKAGE RESOURCE_FILES)
|
|
# Package name is now the sample name (e.g., "Tutorial")
|
|
set(PACKAGE_NAME ${OCCT_PACKAGE})
|
|
|
|
# Get files from CMAKE variables with proper location
|
|
set(ALL_FILES ${OCCT_${PACKAGE_NAME}_FILES})
|
|
set(FILES_LOCATION ${OCCT_${PACKAGE_NAME}_FILES_LOCATION})
|
|
|
|
# Filter for .ts and .qrc files with full paths
|
|
set(TS_FILES)
|
|
set(QRC_FILES)
|
|
foreach(FILE ${ALL_FILES})
|
|
if(FILE MATCHES ".+[.]ts$")
|
|
list(APPEND TS_FILES "${FILES_LOCATION}/${FILE}")
|
|
endif()
|
|
if(FILE MATCHES ".+[.]qrc$")
|
|
list(APPEND QRC_FILES "${FILES_LOCATION}/${FILE}")
|
|
endif()
|
|
endforeach()
|
|
|
|
string (FIND "${OCCT_PACKAGE}" "/" _index)
|
|
if (_index GREATER -1)
|
|
math (EXPR _index "${_index}")
|
|
string (SUBSTRING "${OCCT_PACKAGE}" 0 ${_index} OCCT_PACKAGE_NAME)
|
|
else()
|
|
set (OCCT_PACKAGE_NAME "${OCCT_PACKAGE}")
|
|
endif(_index GREATER -1)
|
|
|
|
#message("QRC files are: ${QRC_FILES} in ${OCCT_PACKAGE}")
|
|
foreach (QRC_FILE ${QRC_FILES})
|
|
if (EXISTS ${QRC_FILE})
|
|
FIND_AND_WRAP_RESOURCE_FILE(${QRC_FILE} RCC_FILES)
|
|
list (APPEND ${RESOURCE_FILES} "${RCC_FILES}")
|
|
endif()
|
|
endforeach()
|
|
|
|
#message("TS files are: ${TS_FILES} in ${OCCT_PACKAGE}")
|
|
foreach (TS_FILE ${TS_FILES})
|
|
FIND_AND_WRAP_TS_FILE(${TS_FILE} "${TARGET_FOLDER}/${CURRENT_MODULE}" QM_FILES)
|
|
if (EXISTS ${TS_FILE})
|
|
list (APPEND ${RESOURCE_FILES} "${TS_FILE}")
|
|
list (APPEND ${RESOURCE_FILES} "${QM_FILES}")
|
|
endif()
|
|
endforeach()
|
|
|
|
foreach (QM_FILE ${QM_FILES})
|
|
INSTALL(FILES ${QM_FILE} DESTINATION "${INSTALL_DIR_RESOURCE}/samples")
|
|
#message("install *.qm files (${QM_FILE}) to: ${INSTALL_DIR_RESOURCE}/samples")
|
|
endforeach (QM_FILE ${QM_FILES})
|
|
endmacro()
|
|
|