mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-21 22:20:48 -06:00
INTERFACE libraries were created with the intention of collecting usage requirements for use by other targets via `target_link_libraries`. Therefore they were not allowed to have SOURCES and were not included in the generated buildsystem. In practice, this has become limiting: * Header-only libraries do have sources, they just do not compile. Developers should be able to edit those sources (the header files) in their IDE. * Header-only libraries may need to generate some of their header files via custom commands. Some projects work around these limitations by pairing each interface library with an `add_custom_target` that makes the header files and custom commands appear in the generated buildsystem and in IDEs. Lift such limitations by allowing INTERFACE libraries to have SOURCES. For those with sources, add a corresponding build target to the generated buildsystem. Fixes: #19145
65 lines
1.9 KiB
CMake
65 lines
1.9 KiB
CMake
cmake_policy(SET CMP0057 NEW)
|
|
|
|
include(RunCMake)
|
|
cmake_policy(SET CMP0054 NEW)
|
|
|
|
run_cmake(VsCsharpSourceGroup)
|
|
run_cmake(VsCSharpCompilerOpts)
|
|
run_cmake(ExplicitCMakeLists)
|
|
run_cmake(InterfaceLibSources)
|
|
run_cmake(RuntimeLibrary)
|
|
run_cmake(SourceGroupCMakeLists)
|
|
run_cmake(SourceGroupTreeCMakeLists)
|
|
run_cmake(VsConfigurationType)
|
|
run_cmake(VsTargetsFileReferences)
|
|
run_cmake(VsCustomProps)
|
|
run_cmake(VsDebuggerWorkingDir)
|
|
run_cmake(VsDebuggerCommand)
|
|
run_cmake(VsDebuggerCommandArguments)
|
|
run_cmake(VsDebuggerEnvironment)
|
|
run_cmake(VsCSharpCustomTags)
|
|
run_cmake(VsCSharpDocumentationFile)
|
|
run_cmake(VsCSharpReferenceProps)
|
|
run_cmake(VsCSharpWithoutSources)
|
|
run_cmake(VsCSharpDeployFiles)
|
|
run_cmake(VSCSharpDefines)
|
|
run_cmake(VsSdkDirectories)
|
|
run_cmake(VsGlobals)
|
|
run_cmake(VsProjectImport)
|
|
run_cmake(VsPackageReferences)
|
|
run_cmake(VsDpiAware)
|
|
run_cmake(VsDpiAwareBadParam)
|
|
run_cmake(VsPrecompileHeaders)
|
|
run_cmake(VsPrecompileHeadersReuseFromCompilePDBName)
|
|
run_cmake(VsDeployEnabled)
|
|
run_cmake(VsSettings)
|
|
run_cmake(VsSourceSettingsTool)
|
|
run_cmake(VsPlatformToolset)
|
|
|
|
run_cmake(VsWinRTByDefault)
|
|
|
|
set(RunCMake_GENERATOR_TOOLSET "VCTargetsPath=$(VCTargetsPath)")
|
|
run_cmake(VsVCTargetsPath)
|
|
unset(RunCMake_GENERATOR_TOOLSET)
|
|
|
|
if(CMAKE_C_COMPILER_ID STREQUAL "MSVC" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.05)
|
|
run_cmake(VsJustMyCode)
|
|
endif()
|
|
|
|
if(CMAKE_C_COMPILER_ID STREQUAL "MSVC" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.20)
|
|
run_cmake(VsSpectreMitigation)
|
|
endif()
|
|
|
|
# Visual Studio 2017 has toolset version 141
|
|
string(REPLACE "v" "" generator_toolset "${RunCMake_GENERATOR_TOOLSET}")
|
|
if (RunCMake_GENERATOR MATCHES "Visual Studio 1[0-4] 201[0-5]" OR
|
|
(RunCMake_GENERATOR_TOOLSET AND generator_toolset VERSION_LESS "141"))
|
|
run_cmake(UnityBuildPre2017)
|
|
else()
|
|
run_cmake(UnityBuildNative)
|
|
run_cmake(UnityBuildNativeGrouped)
|
|
endif()
|
|
|
|
run_cmake(VsDotnetTargetFramework)
|
|
run_cmake(VsDotnetTargetFrameworkVersion)
|