BUG: Only pay attention to the FRAMEWORK target property for SHARED library targets

This commit is contained in:
David Cole 2007-08-01 13:04:45 -04:00
parent a0533be267
commit ee91e25499
5 changed files with 34 additions and 11 deletions

View File

@ -727,7 +727,8 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
buildFiles->AddObject(xsf);
}
}
if(cmtarget.GetPropertyAsBool("FRAMEWORK"))
if (cmtarget.GetType() == cmTarget::SHARED_LIBRARY &&
cmtarget.GetPropertyAsBool("FRAMEWORK"))
{
this->AddFrameworkPhases(&cmtarget, buildPhases);
}
@ -1239,7 +1240,8 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
target.GetType() == cmTarget::EXECUTABLE)
{
std::string pndir = target.GetDirectory();
if(target.GetPropertyAsBool("FRAMEWORK"))
if (target.GetType() == cmTarget::SHARED_LIBRARY &&
target.GetPropertyAsBool("FRAMEWORK"))
{
pndir += "/..";
pndir = cmSystemTools::CollapseFullPath(pndir.c_str());
@ -2053,7 +2055,8 @@ void cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root,
}
std::vector<cmSourceFile*> classes = cmtarget.GetSourceFiles();
// add framework copy headers
if(cmtarget.GetPropertyAsBool("FRAMEWORK"))
if (cmtarget.GetType() == cmTarget::SHARED_LIBRARY &&
cmtarget.GetPropertyAsBool("FRAMEWORK"))
{
const char* headers = cmtarget.GetProperty("FRAMEWORK_PUBLIC_HEADERS");
if(!headers)

View File

@ -1775,7 +1775,8 @@ void cmLocalGenerator
// do not add the target full name but just use the directory
// name
#ifdef __APPLE__
if(!tgt->GetPropertyAsBool("FRAMEWORK"))
if (!(tgt->GetType() == cmTarget::SHARED_LIBRARY &&
tgt->GetPropertyAsBool("FRAMEWORK")))
#endif
{
linkItem += "/";

View File

@ -505,7 +505,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
}
#if defined(__APPLE__)
// If we're creating a framework, place the output into a framework directory
if(this->Target->GetPropertyAsBool("FRAMEWORK"))
if (this->Target->GetType() == cmTarget::SHARED_LIBRARY &&
this->Target->GetPropertyAsBool("FRAMEWORK"))
{
this->CreateFramework(targetName, outpath);
}

View File

@ -1790,7 +1790,8 @@ void cmTarget::NormalGetFullNameInternal(TargetType type,
}
#if defined(__APPLE__)
// frameworks do not have a prefix or a suffix
if(this->GetPropertyAsBool("FRAMEWORK"))
if (this->GetType() == cmTarget::SHARED_LIBRARY &&
this->GetPropertyAsBool("FRAMEWORK"))
{
targetPrefix = 0;
targetSuffix = 0;
@ -2322,7 +2323,8 @@ const char* cmTarget::GetOutputDir(bool implib)
#if defined(__APPLE__)
// frameworks do not have a prefix or a suffix
if(this->GetPropertyAsBool("FRAMEWORK"))
if (this->GetType() == cmTarget::SHARED_LIBRARY &&
this->GetPropertyAsBool("FRAMEWORK"))
{
out += "/";
out += this->GetFullName(0, implib);

View File

@ -1,4 +1,5 @@
project(Framework)
add_library(foo SHARED foo.cxx foo.h)
set_target_properties(foo PROPERTIES
FRAMEWORK TRUE
@ -9,3 +10,18 @@ set_target_properties(foo PROPERTIES
add_executable(bar bar.cxx)
target_link_libraries(bar foo)
# Make a static library and apply the framework properties to it to verify
# that everything still builds correctly, but it will not actually produce
# a framework... The framework properties only apply when the library type
# is SHARED.
#
add_library(fooStatic STATIC foo.cxx foo.h)
set_target_properties(fooStatic PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_PUBLIC_HEADERS "foo.h;foo2.h"
FRAMEWORK_VERSION ver2
FRAMEWORK_RESOURCES "test.lua"
)
add_executable(barStatic bar.cxx)
target_link_libraries(barStatic fooStatic)