BUG: better fix for .dll.lib problem

This commit is contained in:
Bill Hoffman 2006-11-30 17:32:46 -05:00
parent 464e3c137e
commit 5ff037e894
3 changed files with 17 additions and 4 deletions

View File

@ -466,8 +466,9 @@ bool cmOrderLinkDirectories::DetermineLibraryPathOrder()
// check to see if the file is a full path or just contains
// a / in it and is a path to something
cmStdString& item = this->RawLinkItems[i];
if(cmSystemTools::FileIsFullPath(item.c_str())
|| item.find("/") != item.npos)
// if it is a full path to an item then separate it from the path
// this only works with files and paths
if(cmSystemTools::FileIsFullPath(item.c_str()))
{
if(cmSystemTools::FileIsDirectory(this->RawLinkItems[i].c_str()))
{

View File

@ -864,7 +864,14 @@ const char* cmTarget::GetDirectory(const char* config)
{
this->Directory = this->Makefile->GetStartOutputDirectory();
}
// if LIBRARY_OUTPUT_PATH or EXECUTABLE_OUTPUT_PATH was relative
// then make them full paths because this directory MUST
// be a full path or things will not work!!!
if(!cmSystemTools::FileIsFullPath(this->Directory.c_str()))
{
this->Directory = this->Makefile->GetCurrentOutputDirectory() +
std::string("/") + this->Directory;
}
if(config)
{
// Add the configuration's subdirectory.

View File

@ -1,8 +1,13 @@
project(LibName)
set(LIBRARY_OUTPUT_PATH lib)
# this is a test to make sure that relative path
# LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH work
set(LIBRARY_OUTPUT_PATH lib)
set(EXECUTABLE_OUTPUT_PATH lib)
add_library(bar SHARED bar.c)
add_library(foo SHARED foo.c)
target_link_libraries(foo bar)
add_executable(foobar foobar.c)
target_link_libraries(foobar foo)
IF(UNIX)
target_link_libraries(foobar -L/usr/local/lib)
ENDIF(UNIX)