Browse Source

ENH: fix bug in full path to target depends stuff

pull/1/head
Bill Hoffman 19 years ago
parent
commit
26b527ac0f
  1. 13
      Source/CMakeLists.txt
  2. 2
      Source/cmLocalGenerator.cxx
  3. 2
      Source/cmTarget.cxx
  4. 11
      Tests/CustComDepend/CMakeLists.txt
  5. 15
      Tests/CustComDepend/foo.cxx

13
Source/CMakeLists.txt

@ -410,16 +410,17 @@ IF(BUILD_TESTING)
--test-command ${CMAKE_CMAKE_COMMAND} -E compare_files
${CMake_SOURCE_DIR}/Tests/TargetName/scripts/hello_world
${CMake_BINARY_DIR}/Tests/TargetName/scripts/hello_world)
ADD_TEST(LibName ${CMAKE_CTEST_COMMAND}
ADD_TEST(CustComDepend ${CMAKE_CTEST_COMMAND}
--build-and-test
"${CMake_SOURCE_DIR}/Tests/LibName"
"${CMake_BINARY_DIR}/Tests/LibName"
"${CMake_SOURCE_DIR}/Tests/CustComDepend"
"${CMake_BINARY_DIR}/Tests/CustComDepend"
--build-two-config
--build-generator ${CMAKE_TEST_GENERATOR}
--build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
--build-project LibName
--build-exe-dir "${CMake_BINARY_DIR}/Tests/LibName/lib"
--test-command foobar
--build-project CustComDepend
--build-exe-dir "${CMake_BINARY_DIR}/Tests/CustComDepend/bin"
--test-command foo bar.c
)
ADD_TEST(CustomCommand ${CMAKE_CTEST_COMMAND}

2
Source/cmLocalGenerator.cxx

@ -1863,6 +1863,8 @@ std::string cmLocalGenerator::GetRealDependency(const char* inName,
tLocation = cmSystemTools::GetFilenamePath(tLocation);
std::string depLocation = cmSystemTools::GetFilenamePath(
std::string(inName));
depLocation = cmSystemTools::CollapseFullPath(depLocation.c_str());
tLocation = cmSystemTools::CollapseFullPath(tLocation.c_str());
if(depLocation != tLocation)
{
// it is a full path to a depend that has the same name

2
Source/cmTarget.cxx

@ -253,6 +253,8 @@ void cmTarget::TraceVSDependencies(std::string projFile,
tLocation = cmSystemTools::GetFilenamePath(tLocation);
std::string depLocation = cmSystemTools::GetFilenamePath(
std::string(fullName));
depLocation = cmSystemTools::CollapseFullPath(depLocation.c_str());
tLocation = cmSystemTools::CollapseFullPath(tLocation.c_str());
if(depLocation == tLocation)
{
isUtility = true;

11
Tests/CustComDepend/CMakeLists.txt

@ -0,0 +1,11 @@
project(CustComDepend)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE=1)
set(EXECUTABLE_OUTPUT_PATH ${CustComDepend_BINARY_DIR}/bin)
add_executable(foo foo.cxx)
add_custom_command(
OUTPUT ${CustComDepend_BINARY_DIR}/bar.c
COMMAND ${CustComDepend_BINARY_DIR}/bin/foo ${CustComDepend_BINARY_DIR}/bar.c
DEPENDS ${CustComDepend_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/foo
)
add_library(bar SHARED ${CustComDepend_BINARY_DIR}/bar.c)

15
Tests/CustComDepend/foo.cxx

@ -0,0 +1,15 @@
#include <stdio.h>
int main(int ac, char** av)
{
FILE* fout = fopen(av[1], "w");
printf("create %s\n", av[1]);
if(!fout)
{
return -1;
}
fprintf(fout, "int bar(){ return 10;}\n");
fclose(fout);
return 0;
}
Loading…
Cancel
Save