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_SOURCE_DIR}/Tests/TargetName/scripts/hello_world
${CMake_BINARY_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} ADD_TEST(CustomCommand ${CMAKE_CTEST_COMMAND}
--build-and-test --build-and-test
"${CMake_SOURCE_DIR}/Tests/CustomCommand" "${CMake_SOURCE_DIR}/Tests/CustomCommand"

View File

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