VS: Add option to put INSTALL target in .sln default build
Add a CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD variable to control this behavior.
This commit is contained in:
parent
562e69dd50
commit
a6e4e73da3
|
@ -268,6 +268,7 @@ Variables that Control the Build
|
|||
/variable/CMAKE_TRY_COMPILE_CONFIGURATION
|
||||
/variable/CMAKE_USE_RELATIVE_PATHS
|
||||
/variable/CMAKE_VISIBILITY_INLINES_HIDDEN
|
||||
/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
|
||||
/variable/CMAKE_WIN32_EXECUTABLE
|
||||
/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute
|
||||
/variable/EXECUTABLE_OUTPUT_PATH
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
vs-install-in-default-build
|
||||
---------------------------
|
||||
|
||||
* The :ref:`Visual Studio Generators` learned a new
|
||||
:variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option
|
||||
to put the ``INSTALL`` target in the default build of a
|
||||
solution (``.sln``) file.
|
|
@ -0,0 +1,8 @@
|
|||
CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
|
||||
-----------------------------------------
|
||||
|
||||
Include INSTALL target to default build.
|
||||
|
||||
In Visual Studio solution, by default the INSTALL target will not be part of
|
||||
the default build. Setting this variable will enable the INSTALL target to be
|
||||
part of the default build.
|
|
@ -1031,6 +1031,24 @@ cmGlobalVisualStudio7Generator::IsPartOfDefaultBuild(
|
|||
int type = target->GetType();
|
||||
if (type == cmTarget::GLOBAL_TARGET)
|
||||
{
|
||||
// check if INSTALL target is part of default build
|
||||
if(target->GetName() == "INSTALL")
|
||||
{
|
||||
// inspect CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD properties
|
||||
for(std::vector<std::string>::iterator i = this->Configurations.begin();
|
||||
i != this->Configurations.end(); ++i)
|
||||
{
|
||||
const char* propertyValue = target->GetMakefile()
|
||||
->GetDefinition("CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD");
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression>
|
||||
cge = ge.Parse(propertyValue);
|
||||
if(cmSystemTools::IsOn(cge->Evaluate(target->GetMakefile(), *i)))
|
||||
{
|
||||
activeConfigs.insert(*i);
|
||||
}
|
||||
}
|
||||
}
|
||||
return activeConfigs;
|
||||
}
|
||||
if(type == cmTarget::UTILITY && !this->IsDependedOn(projectTargets, target))
|
||||
|
|
|
@ -1870,6 +1870,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
|
|||
--build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
|
||||
--build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
|
||||
--build-project VSExcludeFromDefaultBuild
|
||||
--build-target install
|
||||
--test-command ${CMAKE_COMMAND}
|
||||
-D "activeConfig=${config}"
|
||||
-D "allConfigs=${CMAKE_CONFIGURATION_TYPES}"
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
cmake_minimum_required(VERSION 2.8.9)
|
||||
project(VSExcludeFromDefaultBuild)
|
||||
|
||||
# CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD will enable the INSTALL target to be part of the default build
|
||||
set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1)
|
||||
|
||||
# First step is to clear all .exe files in output so that possible past
|
||||
# failures of this test do not prevent it from succeeding.
|
||||
add_custom_target(ClearExes ALL
|
||||
|
@ -13,6 +16,7 @@ add_custom_target(ClearExes ALL
|
|||
function(add_test_executable target)
|
||||
add_executable("${target}" ${ARGN})
|
||||
add_dependencies("${target}" ClearExes)
|
||||
install(TARGETS "${target}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/install" OPTIONAL)
|
||||
endfunction()
|
||||
|
||||
add_test_executable(DefaultBuilt main.c)
|
||||
|
|
|
@ -2,3 +2,7 @@ file(GLOB exeFiles "${dir}/*.exe")
|
|||
foreach(exeFile IN LISTS exeFiles)
|
||||
file(REMOVE "${exeFile}")
|
||||
endforeach()
|
||||
file(GLOB exeFiles "${dir}/install/*.exe")
|
||||
foreach(exeFile IN LISTS exeFiles)
|
||||
file(REMOVE "${exeFile}")
|
||||
endforeach()
|
||||
|
|
|
@ -7,6 +7,12 @@ macro(TestExists exeName)
|
|||
else()
|
||||
message(FATAL_ERROR "File ${exeFile} was expected ${ARGN} to exist!")
|
||||
endif()
|
||||
set(exeFile "${dir}/${activeConfig}/install/${exeName}.exe")
|
||||
if(${ARGN} EXISTS "${exeFile}")
|
||||
message(STATUS "File ${exeFile} was correctly found ${ARGN} to exist.")
|
||||
else()
|
||||
message(FATAL_ERROR "File ${exeFile} was expected ${ARGN} to exist!")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
TestExists(DefaultBuilt)
|
||||
|
|
Loading…
Reference in New Issue