Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
Yuhang Zhao 2023-03-04 16:36:38 +08:00
parent 9ce4323380
commit 5395839fbb
1 changed files with 15 additions and 8 deletions

View File

@ -40,7 +40,7 @@ function(setup_project)
cmake_policy(SET CMP0141 NEW)
endif()
# Introduced by CMP0141.
if(MSVC AND NOT DEFINED CMAKE_MSVC_DEBUG_INFORMATION_FORMAT)
if(NOT DEFINED CMAKE_MSVC_DEBUG_INFORMATION_FORMAT)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>" PARENT_SCOPE)
endif()
# Improve language standard and extension selection.
@ -76,16 +76,16 @@ function(setup_project)
cmake_policy(SET CMP0091 NEW)
endif()
# Introduced by CMP0091.
if(MSVC AND NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
if(NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL" PARENT_SCOPE)
endif()
# Add correct link flags for PIE (Position Independent Executable).
if(POLICY CMP0083)
cmake_policy(SET CMP0083 NEW)
endif()
#if(NOT DEFINED CMAKE_BUILD_TYPE)
# set(CMAKE_BUILD_TYPE "Release" PARENT_SCOPE)
#endif()
if(NOT DEFINED CMAKE_BUILD_TYPE AND NOT DEFINED CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "Release" PARENT_SCOPE)
endif()
if(PROJ_ARGS_ENABLE_LTO)
# MinGW has many bugs when LTO is enabled, and they are all very
# hard to workaround, so just don't enable LTO at all for MinGW.
@ -105,14 +105,15 @@ function(setup_project)
endif()
endif()
endif()
include(GNUInstallDirs)
if(NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin" PARENT_SCOPE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}" PARENT_SCOPE)
endif()
if(NOT DEFINED CMAKE_LIBRARY_OUTPUT_DIRECTORY)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib" PARENT_SCOPE)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}" PARENT_SCOPE)
endif()
if(NOT DEFINED CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib" PARENT_SCOPE)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}" PARENT_SCOPE)
endif()
set(CMAKE_INCLUDE_CURRENT_DIR ON PARENT_SCOPE)
set(CMAKE_LINK_DEPENDS_NO_SHARED ON PARENT_SCOPE)
@ -120,6 +121,12 @@ function(setup_project)
include(CheckPIESupported)
check_pie_supported() # This function must be called to ensure CMake adds -fPIE to the linker flags.
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON PARENT_SCOPE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON PARENT_SCOPE)
if(APPLE)
set(CMAKE_MACOSX_RPATH ON PARENT_SCOPE)
else()
set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}" PARENT_SCOPE)
endif()
if(PROJ_ARGS_QT_PROJECT)
set(CMAKE_AUTOUIC ON PARENT_SCOPE)
set(CMAKE_AUTOMOC ON PARENT_SCOPE)