[cmake-commits] martink committed CMakeLists.txt 1.328 1.329
cmTarget.cxx 1.121 1.122 cmTarget.h 1.70 1.71
cmake-commits at cmake.org
cmake-commits at cmake.org
Mon Feb 19 13:20:29 EST 2007
Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv26759
Modified Files:
CMakeLists.txt cmTarget.cxx cmTarget.h
Log Message:
ENH: turn on spaces in path test
Index: cmTarget.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmTarget.h,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- cmTarget.h 16 Feb 2007 21:12:16 -0000 1.70
+++ cmTarget.h 19 Feb 2007 18:20:27 -0000 1.71
@@ -181,6 +181,10 @@
target property. */
const char* GetLocation(const char* config);
+ /** Get the location of the target in the build tree for use by ctest.
+ May make use of the CTEST_TEST_CONFIGURATION variable in ctest. */
+ const char* GetTestLocation(const char* config);
+
/** Get the target major and minor version numbers interpreted from
the VERSION property. Version 0 is returned if the property is
not set or cannot be parsed. */
Index: CMakeLists.txt
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CMakeLists.txt,v
retrieving revision 1.328
retrieving revision 1.329
diff -u -d -r1.328 -r1.329
--- CMakeLists.txt 8 Feb 2007 21:18:21 -0000 1.328
+++ CMakeLists.txt 19 Feb 2007 18:20:27 -0000 1.329
@@ -991,6 +991,18 @@
)
ENDIF(NOT CMAKE_TEST_DIFFERENT_GENERATOR)
+ ADD_TEST(SubDirSpaces ${CMAKE_CTEST_COMMAND}
+ --build-and-test
+ "${CMake_SOURCE_DIR}/Tests/SubDirSpaces"
+ "${CMake_BINARY_DIR}/Tests/SubDirSpaces"
+ --build-exe-dir "${CMake_BINARY_DIR}/Tests/SubDirSpaces/Executable"
+ --build-generator ${CMAKE_TEST_GENERATOR}
+ --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
+ --build-project SUBDIR
+ --test-command test
+ "${CMake_BINARY_DIR}/Tests/SubDirSpaces/ShouldBeHere"
+ "${CMake_BINARY_DIR}/Tests/SubDirSpaces/testfromsubdir.obj"
+ )
IF (WIN32)
ADD_TEST(SubDir ${CMAKE_CTEST_COMMAND}
Index: cmTarget.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmTarget.cxx,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -d -r1.121 -r1.122
--- cmTarget.cxx 17 Feb 2007 13:46:24 -0000 1.121
+++ cmTarget.cxx 19 Feb 2007 18:20:27 -0000 1.122
@@ -233,6 +233,12 @@
"(such as \".so\") on a library name.");
cm->DefineProperty
+ ("TEST_LOCATION", cmProperty::TARGET,
+ "Where a target will be written on disk for ctest.",
+ "Much like the LOCATION property but makes use of "
+ "CTEST_TEST_CONFIGURATION to handle the build configuration.");
+
+ cm->DefineProperty
("VERSION", cmProperty::TARGET,
"What version number is this target.",
"For shared libraries VERSION and SOVERSION can be used to specify "
@@ -1147,6 +1153,25 @@
return this->Location.c_str();
}
+const char* cmTarget::GetTestLocation(const char* config)
+{
+ this->Location = this->GetDirectory();
+ if(!this->Location.empty())
+ {
+ this->Location += "/";
+ }
+ const char* cfgid = this->Makefile->GetDefinition("CMAKE_CFG_INTDIR");
+ // if this platform has configurations, then use the ctest var
+ if(cfgid && strcmp(cfgid, ".") != 0)
+ {
+ this->Location += "${CTEST_CONFIGURATION_TYPE}";
+ this->Location += "/";
+ }
+ this->Location += this->GetFullName(config, false);
+ return this->Location.c_str();
+}
+
+
//----------------------------------------------------------------------------
void cmTarget::GetTargetVersion(int& major, int& minor)
{
@@ -1237,16 +1262,38 @@
// variable in the location.
this->SetProperty("LOCATION", this->GetLocation(0));
}
+
+ if (!strcmp(prop,"TEST_LOCATION"))
+ {
+ // Set the LOCATION property of the target. Note that this cannot take
+ // into account the per-configuration name of the target because the
+ // configuration type may not be known at CMake time. We should
+ // deprecate this feature and instead support transforming an executable
+ // target name given as the command part of custom commands into the
+ // proper path at build time. Alternatively we could put environment
+ // variable settings in all custom commands that hold the name of the
+ // target for each configuration and then give a reference to the
+ // variable in the location.
+ this->SetProperty("TEST_LOCATION", this->GetTestLocation(0));
+ }
+ else
+
if(strcmp(prop, "OBJECT_FILES") == 0)
{
this->ComputeObjectFiles();
}
+
// Per-configuration location can be computed.
int len = static_cast<int>(strlen(prop));
if(len > 9 && strcmp(prop+len-9, "_LOCATION") == 0)
{
- std::string configName(prop, len-9);
- this->SetProperty(prop, this->GetLocation(configName.c_str()));
+ // Per-configuration location can be computed.
+ int len = static_cast<int>(strlen(prop));
+ if(len > 9 && strcmp(prop+len-9, "_LOCATION") == 0)
+ {
+ std::string configName(prop, len-9);
+ this->SetProperty(prop, this->GetLocation(configName.c_str()));
+ }
}
// the type property returns what type the target is
if (!strcmp(prop,"TYPE"))
More information about the Cmake-commits
mailing list