BUG: fix a problem where it tried to link .dll.lib files

This commit is contained in:
Bill Hoffman 2006-11-29 15:58:19 -05:00
parent d6219588c0
commit 46f8ed0648
6 changed files with 41 additions and 2 deletions

View File

@ -403,6 +403,18 @@ IF(BUILD_TESTING)
${CMake_SOURCE_DIR}/Tests/TargetName/scripts/hello_world
${CMake_BINARY_DIR}/Tests/TargetName/scripts/hello_world)
ADD_TEST(LibName ${CMAKE_CTEST_COMMAND}
--build-and-test
"${CMake_SOURCE_DIR}/Tests/LibName"
"${CMake_BINARY_DIR}/Tests/LibName"
--build-two-config
--build-generator ${CMAKE_TEST_GENERATOR}
--build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
--build-project LibName
--build-run-dir "${CMake_BINARY_DIR}/Tests/LibName/lib"
--test-command foobar
)
ADD_TEST(CustomCommand ${CMAKE_CTEST_COMMAND}
--build-and-test
"${CMake_SOURCE_DIR}/Tests/CustomCommand"

View File

@ -463,7 +463,10 @@ bool cmOrderLinkDirectories::DetermineLibraryPathOrder()
#ifdef CM_ORDER_LINK_DIRECTORIES_DEBUG
fprintf(stderr, "Raw link item [%s]\n", this->RawLinkItems[i].c_str());
#endif
if(cmSystemTools::FileIsFullPath(this->RawLinkItems[i].c_str()))
// check to see if the file is a full path or just contains
// a / in it and is a path to something
if(cmSystemTools::FileIsFullPath(this->RawLinkItems[i].c_str())
|| this->RawLinkItems[i].find("/") != cmStdString.npos)
{
if(cmSystemTools::FileIsDirectory(this->RawLinkItems[i].c_str()))
{
@ -486,6 +489,8 @@ bool cmOrderLinkDirectories::DetermineLibraryPathOrder()
}
else
{
// A full path to a directory was found as a link item
// warn user
std::string message =
"Warning: Ignoring path found in link libraries for target: ";
message += this->TargetName;
@ -496,7 +501,7 @@ bool cmOrderLinkDirectories::DetermineLibraryPathOrder()
cmSystemTools::Message(message.c_str());
continue;
}
}
} // is it a directory
if(!framework)
{
dir = cmSystemTools::GetFilenamePath(this->RawLinkItems[i]);

View File

@ -0,0 +1,7 @@
project(LibName)
set(LIBRARY_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)

3
Tests/LibName/bar.c Normal file
View File

@ -0,0 +1,3 @@
__declspec(dllexport) void foo()
{
}

5
Tests/LibName/foo.c Normal file
View File

@ -0,0 +1,5 @@
__declspec(dllimport) void foo();
__declspec(dllexport) void bar()
{
foo();
}

7
Tests/LibName/foobar.c Normal file
View File

@ -0,0 +1,7 @@
__declspec(dllimport) void bar();
int main(int ac, char** av)
{
bar();
return 0;
}