summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-11-30 22:32:46 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-11-30 22:32:46 (GMT)
commit5ff037e894fc4631dc3d7c6a59e5f2e4fb87c793 (patch)
tree1bc78253f536e13fd4a51461f34763a835d7b779
parent464e3c137e12557e5174b58829a7bbe5564175f9 (diff)
downloadCMake-5ff037e894fc4631dc3d7c6a59e5f2e4fb87c793.zip
CMake-5ff037e894fc4631dc3d7c6a59e5f2e4fb87c793.tar.gz
CMake-5ff037e894fc4631dc3d7c6a59e5f2e4fb87c793.tar.bz2
BUG: better fix for .dll.lib problem
-rw-r--r--Source/cmOrderLinkDirectories.cxx5
-rw-r--r--Source/cmTarget.cxx9
-rw-r--r--Tests/LibName/CMakeLists.txt7
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)