diff options
author | Gregor Jasny <gjasny@googlemail.com> | 2016-08-19 19:50:48 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-08-31 13:16:44 (GMT) |
commit | df32e564aed43470e304cf21d8c9ac1d5a01d055 (patch) | |
tree | b936ba3992df59535e3e80bba12b20bac3e78d52 | |
parent | ff88df48e8a693f213a44aee3ad2474f500857b5 (diff) | |
download | CMake-df32e564aed43470e304cf21d8c9ac1d5a01d055.zip CMake-df32e564aed43470e304cf21d8c9ac1d5a01d055.tar.gz CMake-df32e564aed43470e304cf21d8c9ac1d5a01d055.tar.bz2 |
Xcode: Add targets marked as EXCLUDE_FROM_ALL to project (#16101)
-rw-r--r-- | Source/cmGlobalXCodeGenerator.cxx | 13 | ||||
-rw-r--r-- | Source/cmGlobalXCodeGenerator.h | 3 | ||||
-rw-r--r-- | Tests/RunCMake/add_subdirectory/ExcludeFromAll.cmake | 6 | ||||
-rw-r--r-- | Tests/RunCMake/add_subdirectory/ExcludeFromAll/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/RunCMake/add_subdirectory/ExcludeFromAll/bar.cpp | 1 | ||||
-rw-r--r-- | Tests/RunCMake/add_subdirectory/ExcludeFromAll/foo.cpp | 6 | ||||
-rw-r--r-- | Tests/RunCMake/add_subdirectory/ExcludeFromAll/foo.h | 1 | ||||
-rw-r--r-- | Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake | 12 | ||||
-rw-r--r-- | Tests/RunCMake/add_subdirectory/main.cpp | 6 |
9 files changed, 41 insertions, 11 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 780ca90..b4bc084 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -2635,13 +2635,10 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target) } bool cmGlobalXCodeGenerator::CreateGroups( - cmLocalGenerator* root, std::vector<cmLocalGenerator*>& generators) + std::vector<cmLocalGenerator*>& generators) { for (std::vector<cmLocalGenerator*>::iterator i = generators.begin(); i != generators.end(); ++i) { - if (this->IsExcluded(root, *i)) { - continue; - } cmMakefile* mf = (*i)->GetMakefile(); std::vector<cmSourceGroup> sourceGroups = mf->GetSourceGroups(); std::vector<cmGeneratorTarget*> tgts = (*i)->GetGeneratorTargets(); @@ -2873,7 +2870,7 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects( this->MainGroupChildren->AddObject(resourcesGroup); // now create the cmake groups - if (!this->CreateGroups(root, generators)) { + if (!this->CreateGroups(generators)) { return false; } @@ -3041,10 +3038,8 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects( std::vector<cmXCodeObject*> targets; for (std::vector<cmLocalGenerator*>::iterator i = generators.begin(); i != generators.end(); ++i) { - if (!this->IsExcluded(root, *i)) { - if (!this->CreateXCodeTargets(*i, targets)) { - return false; - } + if (!this->CreateXCodeTargets(*i, targets)) { + return false; } } // loop over all targets and add link and depend info diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index 0485d4f..303dfa0 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h @@ -92,8 +92,7 @@ private: cmXCodeObject* CreateOrGetPBXGroup(cmGeneratorTarget* gtgt, cmSourceGroup* sg); cmXCodeObject* CreatePBXGroup(cmXCodeObject* parent, std::string name); - bool CreateGroups(cmLocalGenerator* root, - std::vector<cmLocalGenerator*>& generators); + bool CreateGroups(std::vector<cmLocalGenerator*>& generators); std::string XCodeEscapePath(const std::string& p); std::string RelativeToSource(const char* p); std::string RelativeToBinary(const char* p); diff --git a/Tests/RunCMake/add_subdirectory/ExcludeFromAll.cmake b/Tests/RunCMake/add_subdirectory/ExcludeFromAll.cmake new file mode 100644 index 0000000..f686005 --- /dev/null +++ b/Tests/RunCMake/add_subdirectory/ExcludeFromAll.cmake @@ -0,0 +1,6 @@ +enable_language(CXX) + +add_subdirectory(ExcludeFromAll EXCLUDE_FROM_ALL) + +add_executable(main main.cpp) +target_link_libraries(main PRIVATE foo) diff --git a/Tests/RunCMake/add_subdirectory/ExcludeFromAll/CMakeLists.txt b/Tests/RunCMake/add_subdirectory/ExcludeFromAll/CMakeLists.txt new file mode 100644 index 0000000..b1df6b0 --- /dev/null +++ b/Tests/RunCMake/add_subdirectory/ExcludeFromAll/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(bar STATIC bar.cpp) + +add_library(foo STATIC foo.cpp) +target_include_directories(foo PUBLIC .) diff --git a/Tests/RunCMake/add_subdirectory/ExcludeFromAll/bar.cpp b/Tests/RunCMake/add_subdirectory/ExcludeFromAll/bar.cpp new file mode 100644 index 0000000..7a828bd --- /dev/null +++ b/Tests/RunCMake/add_subdirectory/ExcludeFromAll/bar.cpp @@ -0,0 +1 @@ +#error This should be excluded from all target diff --git a/Tests/RunCMake/add_subdirectory/ExcludeFromAll/foo.cpp b/Tests/RunCMake/add_subdirectory/ExcludeFromAll/foo.cpp new file mode 100644 index 0000000..c9ad322 --- /dev/null +++ b/Tests/RunCMake/add_subdirectory/ExcludeFromAll/foo.cpp @@ -0,0 +1,6 @@ +#include "foo.h" + +int foo() +{ + return 42; +} diff --git a/Tests/RunCMake/add_subdirectory/ExcludeFromAll/foo.h b/Tests/RunCMake/add_subdirectory/ExcludeFromAll/foo.h new file mode 100644 index 0000000..5d5f8f0 --- /dev/null +++ b/Tests/RunCMake/add_subdirectory/ExcludeFromAll/foo.h @@ -0,0 +1 @@ +int foo(); diff --git a/Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake b/Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake index 9d514e1..88b9283 100644 --- a/Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake +++ b/Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake @@ -3,3 +3,15 @@ include(RunCMake) run_cmake(DoesNotExist) run_cmake(Missing) run_cmake(Function) + +set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/ExcludeFromAll-build) +set(RunCMake_TEST_NO_CLEAN 1) + +file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") +file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + +run_cmake(ExcludeFromAll) +run_cmake_command(ExcludeFromAll-build ${CMAKE_COMMAND} --build .) + +unset(RunCMake_TEST_BINARY_DIR) +unset(RunCMake_TEST_NO_CLEAN) diff --git a/Tests/RunCMake/add_subdirectory/main.cpp b/Tests/RunCMake/add_subdirectory/main.cpp new file mode 100644 index 0000000..1dc3906 --- /dev/null +++ b/Tests/RunCMake/add_subdirectory/main.cpp @@ -0,0 +1,6 @@ +#include "foo.h" + +int main(int, char**) +{ + return foo(); +} |