Merge topic 'framework-interface-includes'
f5ca872
Use linked frameworks as a source of include directories.
This commit is contained in:
commit
828ddb6813
|
@ -3341,6 +3341,34 @@ std::vector<std::string> cmTarget::GetIncludeDirectories(const char *config)
|
|||
new cmTargetInternals::TargetPropertyEntry(cge,
|
||||
it->Value));
|
||||
}
|
||||
|
||||
if(this->Makefile->IsOn("APPLE"))
|
||||
{
|
||||
LinkImplementation const* impl = this->GetLinkImplementation(config,
|
||||
this);
|
||||
for(std::vector<std::string>::const_iterator
|
||||
it = impl->Libraries.begin();
|
||||
it != impl->Libraries.end(); ++it)
|
||||
{
|
||||
std::string libDir = cmSystemTools::CollapseFullPath(it->c_str());
|
||||
|
||||
static cmsys::RegularExpression
|
||||
frameworkCheck("(.*\\.framework)(/Versions/[^/]+)?/[^/]+$");
|
||||
if(!frameworkCheck.find(libDir))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
libDir = frameworkCheck.match(1);
|
||||
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(libDir.c_str());
|
||||
this->Internal
|
||||
->CachedLinkInterfaceIncludeDirectoriesEntries[configString]
|
||||
.push_back(new cmTargetInternals::TargetPropertyEntry(cge));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
processIncludeDirectories(this,
|
||||
|
|
|
@ -109,6 +109,11 @@ public:
|
|||
" INTERFACE_POSITION_INDEPENDENT_CODE: Sets POSITION_INDEPENDENT_CODE\n"
|
||||
" or checked for consistency with existing value\n"
|
||||
"\n"
|
||||
"If an <item> is a library in a Mac OX framework, the Headers "
|
||||
"directory of the framework will also be processed as a \"usage "
|
||||
"requirement\". This has the same effect as passing the framework "
|
||||
"directory as an include directory."
|
||||
"\n"
|
||||
" target_link_libraries(<target> LINK_INTERFACE_LIBRARIES\n"
|
||||
" [[debug|optimized|general] <lib>] ...)\n"
|
||||
"The LINK_INTERFACE_LIBRARIES mode appends the libraries "
|
||||
|
|
|
@ -312,6 +312,12 @@ install(
|
|||
FRAMEWORK DESTINATION Frameworks
|
||||
BUNDLE DESTINATION Applications
|
||||
)
|
||||
if (APPLE)
|
||||
file(COPY testLib4.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/testLib4.framework/Headers)
|
||||
file(COPY testLib4.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/Debug/testLib4.framework/Headers)
|
||||
file(COPY testLib4.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/Release/testLib4.framework/Headers)
|
||||
install(FILES testLib4.h DESTINATION Frameworks/testLib4.framework/Headers)
|
||||
endif()
|
||||
install(
|
||||
TARGETS
|
||||
testExe2libImp testLib3Imp
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
#define TESTLIB4_H
|
|
@ -210,6 +210,10 @@ if (run_pic_test)
|
|||
target_compile_definitions(deps_shared_iface PRIVATE CHECK_PIC_WORKS)
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
add_subdirectory(framework_interface)
|
||||
endif()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Test that targets imported from the build tree have their dependencies
|
||||
# evaluated correctly. The above already tests the same for the install tree.
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
add_library(exp_framework_test framework_test.cpp)
|
||||
get_target_property(exp_loc exp_testLib4 LOCATION)
|
||||
target_link_libraries(exp_framework_test ${exp_loc})
|
||||
|
||||
|
||||
add_library(bld_framework_test framework_test.cpp)
|
||||
get_target_property(bld_loc bld_testLib4 LOCATION)
|
||||
target_link_libraries(bld_framework_test ${bld_loc})
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
#include <testLib4/testLib4.h>
|
||||
|
||||
#ifndef TESTLIB4_H
|
||||
#error Expected define TESTLIB4_H
|
||||
#endif
|
Loading…
Reference in New Issue