mirror of
https://github.com/reactos/CMake.git
synced 2024-11-28 05:50:42 +00:00
parent
4bbd315097
commit
d145d72e70
@ -335,6 +335,7 @@ Properties on Targets
|
||||
/prop_tgt/VS_KEYWORD
|
||||
/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION
|
||||
/prop_tgt/VS_NO_SOLUTION_DEPLOY
|
||||
/prop_tgt/VS_PROJECT_IMPORT
|
||||
/prop_tgt/VS_SCC_AUXPATH
|
||||
/prop_tgt/VS_SCC_LOCALPATH
|
||||
/prop_tgt/VS_SCC_PROJECTNAME
|
||||
|
8
Help/prop_tgt/VS_PROJECT_IMPORT.rst
Normal file
8
Help/prop_tgt/VS_PROJECT_IMPORT.rst
Normal file
@ -0,0 +1,8 @@
|
||||
VS_PROJECT_IMPORT
|
||||
-----------------
|
||||
|
||||
Visual Studio managed project imports
|
||||
|
||||
Adds to a generated Visual Studio project one or more semicolon-delimited paths
|
||||
to .props files needed when building projects from some NuGet packages.
|
||||
For example, ``my_packages_path/MyPackage.1.0.0/build/MyPackage.props``.
|
5
Help/release/dev/vs-project-import.rst
Normal file
5
Help/release/dev/vs-project-import.rst
Normal file
@ -0,0 +1,5 @@
|
||||
vs-project-import
|
||||
-----------------
|
||||
|
||||
* The :prop_tgt:`VS_PROJECT_IMPORT` target property was added which allows
|
||||
to import external .props files in managed Visual Studio targets.
|
@ -662,6 +662,7 @@ void cmVisualStudio10TargetGenerator::Generate()
|
||||
this->WriteCustomCommands(e0);
|
||||
this->WriteAllSources(e0);
|
||||
this->WriteDotNetReferences(e0);
|
||||
this->WriteImports(e0);
|
||||
this->WriteEmbeddedResourceGroup(e0);
|
||||
this->WriteXamlFilesGroup(e0);
|
||||
this->WriteWinRTReferences(e0);
|
||||
@ -810,6 +811,24 @@ void cmVisualStudio10TargetGenerator::WriteDotNetReference(
|
||||
this->WriteDotNetReferenceCustomTags(e2, ref);
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteImports(Elem& e0)
|
||||
{
|
||||
const char* imports =
|
||||
this->GeneratorTarget->Target->GetProperty("VS_PROJECT_IMPORT");
|
||||
if (imports) {
|
||||
std::vector<std::string> argsSplit;
|
||||
cmSystemTools::ExpandListArgument(std::string(imports), argsSplit, false);
|
||||
for (auto& path : argsSplit) {
|
||||
if (!cmsys::SystemTools::FileIsFullPath(path)) {
|
||||
path = this->Makefile->GetCurrentSourceDirectory() + "/" + path;
|
||||
}
|
||||
ConvertToWindowsSlash(path);
|
||||
Elem e1(e0, "Import");
|
||||
e1.Attribute("Project", path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteDotNetReferenceCustomTags(
|
||||
Elem& e2, std::string const& ref)
|
||||
{
|
||||
|
@ -76,6 +76,7 @@ private:
|
||||
void WriteDotNetReference(Elem& e1, std::string const& ref,
|
||||
std::string const& hint,
|
||||
std::string const& config);
|
||||
void WriteImports(Elem& e0);
|
||||
void WriteDotNetReferenceCustomTags(Elem& e2, std::string const& ref);
|
||||
void WriteEmbeddedResourceGroup(Elem& e0);
|
||||
void WriteWinRTReferences(Elem& e0);
|
||||
|
@ -18,3 +18,4 @@ run_cmake(VsCSharpDeployFiles)
|
||||
run_cmake(VSCSharpDefines)
|
||||
run_cmake(VsSdkDirectories)
|
||||
run_cmake(VsGlobals)
|
||||
run_cmake(VsProjectImport)
|
||||
|
28
Tests/RunCMake/VS10Project/VsProjectImport-check.cmake
Normal file
28
Tests/RunCMake/VS10Project/VsProjectImport-check.cmake
Normal file
@ -0,0 +1,28 @@
|
||||
set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
|
||||
if(NOT EXISTS "${vcProjectFile}")
|
||||
set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(test1Import "path\\\\to\\\\nuget_packages\\\\Foo.1.0.0\\\\build\\\\Foo.props")
|
||||
set(test2Import "path\\\\to\\\\nuget_packages\\\\Bar.1.0.0\\\\build\\\\Bar.props")
|
||||
|
||||
set(import1Found FALSE)
|
||||
set(import2Found FALSE)
|
||||
|
||||
file(STRINGS "${vcProjectFile}" lines)
|
||||
|
||||
foreach(i 1 2)
|
||||
set(testImport "${test${i}Import}")
|
||||
foreach(line IN LISTS lines)
|
||||
if(line MATCHES "^ *<Import Project=\".*${test1Import}\" />$")
|
||||
message(STATUS "foo.vcxproj is using project import ${testImport}")
|
||||
set(import${i}Found TRUE)
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
if(NOT import1Found OR NOT import2Found)
|
||||
set(RunCMake_TEST_FAILED "Imported project not found.")
|
||||
return()
|
||||
endif()
|
11
Tests/RunCMake/VS10Project/VsProjectImport.cmake
Normal file
11
Tests/RunCMake/VS10Project/VsProjectImport.cmake
Normal file
@ -0,0 +1,11 @@
|
||||
enable_language(CXX)
|
||||
add_library(foo foo.cpp)
|
||||
|
||||
set(test1Import "path/to/nuget_packages/Foo.1.0.0/build/Foo.props")
|
||||
set(test2Import "path/to/nuget_packages/Bar.1.0.0/build/Bar.props")
|
||||
|
||||
set_property(TARGET foo PROPERTY
|
||||
VS_PROJECT_IMPORT
|
||||
${test1Import}
|
||||
${test2Import}
|
||||
)
|
Loading…
Reference in New Issue
Block a user