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 // check to see if the file is a full path or just contains
// a / in it and is a path to something // a / in it and is a path to something
cmStdString& item = this->RawLinkItems[i]; cmStdString& item = this->RawLinkItems[i];
if(cmSystemTools::FileIsFullPath(item.c_str()) // if it is a full path to an item then separate it from the path
|| item.find("/") != item.npos) // this only works with files and paths
if(cmSystemTools::FileIsFullPath(item.c_str()))
{ {
if(cmSystemTools::FileIsDirectory(this->RawLinkItems[i].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(); 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) if(config)
{ {
// Add the configuration's subdirectory. // Add the configuration's subdirectory.

View File

@ -1,8 +1,13 @@
project(LibName) 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) set(EXECUTABLE_OUTPUT_PATH lib)
add_library(bar SHARED bar.c) add_library(bar SHARED bar.c)
add_library(foo SHARED foo.c) add_library(foo SHARED foo.c)
target_link_libraries(foo bar) target_link_libraries(foo bar)
add_executable(foobar foobar.c) add_executable(foobar foobar.c)
target_link_libraries(foobar foo) target_link_libraries(foobar foo)
IF(UNIX)
target_link_libraries(foobar -L/usr/local/lib)
ENDIF(UNIX)