diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2006-11-30 22:32:46 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2006-11-30 22:32:46 (GMT) |
commit | 5ff037e894fc4631dc3d7c6a59e5f2e4fb87c793 (patch) | |
tree | 1bc78253f536e13fd4a51461f34763a835d7b779 | |
parent | 464e3c137e12557e5174b58829a7bbe5564175f9 (diff) | |
download | CMake-5ff037e894fc4631dc3d7c6a59e5f2e4fb87c793.zip CMake-5ff037e894fc4631dc3d7c6a59e5f2e4fb87c793.tar.gz CMake-5ff037e894fc4631dc3d7c6a59e5f2e4fb87c793.tar.bz2 |
BUG: better fix for .dll.lib problem
-rw-r--r-- | Source/cmOrderLinkDirectories.cxx | 5 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 9 | ||||
-rw-r--r-- | Tests/LibName/CMakeLists.txt | 7 |
3 files changed, 17 insertions, 4 deletions
diff --git a/Source/cmOrderLinkDirectories.cxx b/Source/cmOrderLinkDirectories.cxx index 744c1fe..f3d91a2 100644 --- a/Source/cmOrderLinkDirectories.cxx +++ b/Source/cmOrderLinkDirectories.cxx @@ -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())) { diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 3ee22f3..0dc8bd9 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -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. diff --git a/Tests/LibName/CMakeLists.txt b/Tests/LibName/CMakeLists.txt index e97b6b1..3dca0b0 100644 --- a/Tests/LibName/CMakeLists.txt +++ b/Tests/LibName/CMakeLists.txt @@ -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) |