diff options
author | Brad King <brad.king@kitware.com> | 2006-10-10 01:25:58 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2006-10-10 01:25:58 (GMT) |
commit | 0fe0523810b1408c94c722ebae8aa47429d55d6d (patch) | |
tree | 68f23b45ce5d356e1649275532a1b00fa2015ce6 | |
parent | 9fca6a7837a41ed7dc0f891abdbc32a4a118f2aa (diff) | |
download | CMake-0fe0523810b1408c94c722ebae8aa47429d55d6d.zip CMake-0fe0523810b1408c94c722ebae8aa47429d55d6d.tar.gz CMake-0fe0523810b1408c94c722ebae8aa47429d55d6d.tar.bz2 |
BUG: Fixed out-of-source subdirectories to work when they are also out-of-binary. Updated the OutOfSource test to test this feature.
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 5 | ||||
-rw-r--r-- | Tests/OutOfBinary/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Tests/OutOfBinary/outlib.c | 2 | ||||
-rw-r--r-- | Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Tests/OutOfSource/OutOfSourceSubdir/simple.cxx | 5 | ||||
-rw-r--r-- | Tests/OutOfSource/SubDir/CMakeLists.txt | 5 |
6 files changed, 17 insertions, 4 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 449d37a..381df2e 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1048,9 +1048,8 @@ void cmMakefileTargetGenerator::WriteTargetDriverRule(const char* main_output, bool relink) { // Compute the name of the driver target. - std::string dir = this->Makefile->GetStartOutputDirectory(); - dir += "/"; - dir += this->LocalGenerator->GetTargetDirectory(*this->Target); + std::string dir = + this->LocalGenerator->GetRelativeTargetDirectory(*this->Target); std::string buildTargetRuleName = dir; buildTargetRuleName += relink?"/preinstall":"/build"; buildTargetRuleName = this->Convert(buildTargetRuleName.c_str(), diff --git a/Tests/OutOfBinary/CMakeLists.txt b/Tests/OutOfBinary/CMakeLists.txt new file mode 100644 index 0000000..fcf90bd --- /dev/null +++ b/Tests/OutOfBinary/CMakeLists.txt @@ -0,0 +1,2 @@ +ADD_LIBRARY(outlib outlib.c) + diff --git a/Tests/OutOfBinary/outlib.c b/Tests/OutOfBinary/outlib.c new file mode 100644 index 0000000..9ea579b --- /dev/null +++ b/Tests/OutOfBinary/outlib.c @@ -0,0 +1,2 @@ +int outlib() { return 456; } + diff --git a/Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt b/Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt index 02ab4f6..bbdaa55 100644 --- a/Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt +++ b/Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt @@ -4,7 +4,7 @@ IF ("${PROJECT_SOURCE_DIR}" STREQUAL "${ANOTHER_PROJ_SOURCE_DIR}") SET(BUILD_SHARED_LIBS 1) ADD_LIBRARY(testlib testlib.cxx) ADD_EXECUTABLE (simple simple.cxx ../simple.cxx) - TARGET_LINK_LIBRARIES(simple testlib) + TARGET_LINK_LIBRARIES(simple testlib outlib) ENDIF ("${PROJECT_SOURCE_DIR}" STREQUAL "${ANOTHER_PROJ_SOURCE_DIR}") # test getting a definition from a subdir diff --git a/Tests/OutOfSource/OutOfSourceSubdir/simple.cxx b/Tests/OutOfSource/OutOfSourceSubdir/simple.cxx index 3c9be09..124b7f9 100644 --- a/Tests/OutOfSource/OutOfSourceSubdir/simple.cxx +++ b/Tests/OutOfSource/OutOfSourceSubdir/simple.cxx @@ -5,6 +5,7 @@ #include "testdp.h" extern int simple(); +extern "C" int outlib(); int main () { @@ -21,5 +22,9 @@ int main () { return -1; } + if(outlib() != 456) + { + return -4; + } return 0; } diff --git a/Tests/OutOfSource/SubDir/CMakeLists.txt b/Tests/OutOfSource/SubDir/CMakeLists.txt index 47fa54b..4fc48e1 100644 --- a/Tests/OutOfSource/SubDir/CMakeLists.txt +++ b/Tests/OutOfSource/SubDir/CMakeLists.txt @@ -1,3 +1,8 @@ PROJECT(ANOTHER_PROJ) + +# subdir to an out of source and out of binary directory +ADD_SUBDIRECTORY(${OutOfSource_SOURCE_DIR}/../OutOfBinary + ${OutOfSource_BINARY_DIR}/../OutOfBinary) + # subdir to a sibling dir ADD_SUBDIRECTORY(${OutOfSource_SOURCE_DIR}/${KEN}OutOfSourceSubdir OutOfSourceSubdir ) |