113 lines
4.2 KiB
CMake
Executable File
113 lines
4.2 KiB
CMake
Executable File
#
|
|
# Internal Qt Creator variable reference
|
|
#
|
|
foreach(qtcreator_var
|
|
QT_QMAKE_EXECUTABLE CMAKE_PREFIX_PATH CMAKE_C_COMPILER CMAKE_CXX_COMPILER
|
|
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
|
set(__just_reference_${qtcreator_var} ${${qtcreator_var}})
|
|
endforeach()
|
|
|
|
option(QT_CREATOR_SOURCE_GROUPS "Qt Creator source groups extensions" ON)
|
|
if (QT_CREATOR_SOURCE_GROUPS)
|
|
source_group("Resources" REGULAR_EXPRESSION "\\.(pdf|plist|png|jpeg|jpg|storyboard|xcassets|qrc|svg|gif|ico|webp)$")
|
|
source_group("Forms" REGULAR_EXPRESSION "\\.(ui)$")
|
|
source_group("State charts" REGULAR_EXPRESSION "\\.(scxml)$")
|
|
source_group("Source Files" REGULAR_EXPRESSION
|
|
"\\.(C|F|M|c|c\\+\\+|cc|cpp|mpp|cxx|ixx|cppm|ccm|cxxm|c\\+\\+m|cu|f|f90|for|fpp|ftn|m|mm|rc|def|r|odl|idl|hpj|bat|qml|js)$"
|
|
)
|
|
endif()
|
|
|
|
#
|
|
# Make sure the "cmake-helper" files are writable. See QTCREATORBUG-34151
|
|
#
|
|
if (CMAKE_VERSION GREATER_EQUAL "3.19" AND NOT QTCREATOR_CMAKE_HELPER_DIRECTORY)
|
|
set(QTCREATOR_CMAKE_HELPER_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "")
|
|
cmake_language(DEFER CALL
|
|
file CHMOD "${QTCREATOR_CMAKE_HELPER_DIRECTORY}"
|
|
DIRECTORY_PERMISSIONS
|
|
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
|
GROUP_READ GROUP_EXECUTE
|
|
WORLD_READ WORLD_EXECUTE)
|
|
cmake_language(DEFER CALL
|
|
file CHMOD_RECURSE "${QTCREATOR_CMAKE_HELPER_DIRECTORY}"
|
|
FILE_PERMISSIONS
|
|
OWNER_READ OWNER_WRITE
|
|
GROUP_READ
|
|
WORLD_READ)
|
|
endif()
|
|
|
|
#
|
|
# Set a better default value for CMAKE_INSTALL_PREFIX
|
|
#
|
|
function(qtc_modify_default_install_prefix)
|
|
# If at configure time the user didn't specify a CMAKE_INSTALL_PREFIX variable
|
|
# Modules/CMakeGenericSystem.cmake will set a default value
|
|
# to CMAKE_INSTALL_PREFIX and set CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT to ON
|
|
|
|
# In practice there are cases when CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT is
|
|
# set to ON and a custom CMAKE_INSTALL_PREFIX is set
|
|
|
|
# Do the original CMAKE_INSTALL_PREFIX detection
|
|
if(CMAKE_HOST_UNIX)
|
|
set(original_cmake_install_prefix "/usr/local")
|
|
else()
|
|
GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES)
|
|
set(original_cmake_install_prefix
|
|
"${CMAKE_GENERIC_PROGRAM_FILES}/${PROJECT_NAME}")
|
|
unset(CMAKE_GENERIC_PROGRAM_FILES)
|
|
endif()
|
|
|
|
# When the user code didn't modify the CMake set CMAKE_INSTALL_PREFIX
|
|
# then set the "/tmp" better value for CMAKE_INSTALL_PREFIX
|
|
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND
|
|
CMAKE_INSTALL_PREFIX STREQUAL "${original_cmake_install_prefix}")
|
|
set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "/tmp")
|
|
endif()
|
|
endfunction()
|
|
if (CMAKE_VERSION GREATER_EQUAL "3.19")
|
|
cmake_language(DEFER CALL qtc_modify_default_install_prefix)
|
|
endif()
|
|
|
|
# Store the C/C++ object output extension
|
|
if (CMAKE_VERSION GREATER_EQUAL "3.19")
|
|
cmake_language(DEFER CALL set CMAKE_C_OUTPUT_EXTENSION "${CMAKE_C_OUTPUT_EXTENSION}" CACHE STRING "" FORCE)
|
|
cmake_language(DEFER CALL set CMAKE_CXX_OUTPUT_EXTENSION "${CMAKE_CXX_OUTPUT_EXTENSION}" CACHE STRING "" FORCE)
|
|
endif()
|
|
|
|
#
|
|
# QML Debugging
|
|
#
|
|
if (QT_ENABLE_QML_DEBUG)
|
|
add_compile_definitions($<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
|
|
endif()
|
|
|
|
#
|
|
# Package manager auto-setup
|
|
#
|
|
if (QT_CREATOR_ENABLE_PACKAGE_MANAGER_SETUP)
|
|
include(${CMAKE_CURRENT_LIST_DIR}/package-manager.cmake)
|
|
endif()
|
|
|
|
#
|
|
# MaintenanceTool
|
|
#
|
|
if (QT_CREATOR_ENABLE_MAINTENANCE_TOOL_PROVIDER)
|
|
function(qtc_maintenance_provider_missing_variable_message variable)
|
|
message(STATUS "Qt Creator: ${variable} was not set. "
|
|
"Qt MaintenanceTool cannot be used to install missing Qt modules that you specify in find_package(). "
|
|
"To disable this message set QT_CREATOR_ENABLE_MAINTENANCE_TOOL_PROVIDER to OFF.")
|
|
endfunction()
|
|
|
|
if (NOT QT_QMAKE_EXECUTABLE)
|
|
qtc_maintenance_provider_missing_variable_message(QT_QMAKE_EXECUTABLE)
|
|
return()
|
|
endif()
|
|
|
|
if (CMAKE_VERSION GREATER_EQUAL "3.24")
|
|
list(APPEND CMAKE_PROJECT_TOP_LEVEL_INCLUDES ${CMAKE_CURRENT_LIST_DIR}/maintenance_tool_provider.cmake)
|
|
else()
|
|
message(WARNING "Qt Creator: CMake version 3.24 is needed for MaintenanceTool find_package() provider. "
|
|
"To disable this warning set QT_CREATOR_ENABLE_MAINTENANCE_TOOL_PROVIDER to OFF.")
|
|
endif()
|
|
endif()
|