New upstream version 3.13.4
This commit is contained in:
parent
05c28beacd
commit
a8473d76f3
@ -252,3 +252,29 @@ Changes made since CMake 3.13.0 include the following.
|
|||||||
directories to the ``moc`` tool for :prop_tgt:`AUTOMOC`. This has
|
directories to the ``moc`` tool for :prop_tgt:`AUTOMOC`. This has
|
||||||
been reverted due to regressing existing builds and will need
|
been reverted due to regressing existing builds and will need
|
||||||
further investigation before being re-introduced in a later release.
|
further investigation before being re-introduced in a later release.
|
||||||
|
|
||||||
|
3.13.3
|
||||||
|
------
|
||||||
|
|
||||||
|
* The :generator:`Visual Studio 15 2017` generator has been fixed to work
|
||||||
|
when VS 2019 is installed.
|
||||||
|
|
||||||
|
* CMake now checks that at least one of the source or binary directory
|
||||||
|
is specified when running CMake and issues an error if both are missing.
|
||||||
|
This has always been a documented requirement, but the implementation
|
||||||
|
previously accidentally accepted cases in which neither are specified
|
||||||
|
so long as some other argument is given, and silently used the current
|
||||||
|
working directory as the source and build tree.
|
||||||
|
|
||||||
|
3.13.4
|
||||||
|
------
|
||||||
|
|
||||||
|
* The error added by 3.13.3 in cases that neither a source or binary
|
||||||
|
directory is specified has been downgraded to a warning. While this
|
||||||
|
was never intended, documented, nor supported behavior, some projects
|
||||||
|
relied on it. The error has been downgraded to a warning for the
|
||||||
|
remainder of the 3.13.x release series to allow a transition period,
|
||||||
|
but it may become a fatal error again in a later release. Scripts
|
||||||
|
relying on the old behavior can be trivially fixed by specifying
|
||||||
|
the path to the source tree (even if just ``.``) explicitly and
|
||||||
|
continue to work with all versions of CMake.
|
||||||
|
@ -720,6 +720,9 @@ function(link_resolved_item_into_bundle resolved_item resolved_embedded_item)
|
|||||||
else()
|
else()
|
||||||
get_filename_component(target_dir "${resolved_embedded_item}" DIRECTORY)
|
get_filename_component(target_dir "${resolved_embedded_item}" DIRECTORY)
|
||||||
file(RELATIVE_PATH symlink_target "${target_dir}" "${resolved_item}")
|
file(RELATIVE_PATH symlink_target "${target_dir}" "${resolved_item}")
|
||||||
|
if (NOT EXISTS "${target_dir}")
|
||||||
|
file(MAKE_DIRECTORY "${target_dir}")
|
||||||
|
endif()
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${symlink_target}" "${resolved_embedded_item}")
|
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${symlink_target}" "${resolved_embedded_item}")
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -24,7 +24,7 @@ set(DETECT_CXX14 "((__cplusplus >= 201300L) || ((__cplusplus == 201103L) && !def
|
|||||||
unset(DETECT_BUGGY_ICC15)
|
unset(DETECT_BUGGY_ICC15)
|
||||||
|
|
||||||
set(Intel17_CXX14 "__INTEL_COMPILER >= 1700 && ${DETECT_CXX14}")
|
set(Intel17_CXX14 "__INTEL_COMPILER >= 1700 && ${DETECT_CXX14}")
|
||||||
set(_cmake_feature_test_cxx_relaxed_constexpr "__cpp_constexpr >= 201304 || (${Intel17_CXX14} && __INTEL_COMPILER != 1800 && !defined(_MSC_VER))")
|
set(_cmake_feature_test_cxx_relaxed_constexpr "__cpp_constexpr >= 201304 || (${Intel17_CXX14} && !(__INTEL_COMPILER == 1800 && __INTEL_COMPILER_UPDATE < 5) && !defined(_MSC_VER))")
|
||||||
|
|
||||||
set(Intel16_CXX14 "__INTEL_COMPILER >= 1600 && ${DETECT_CXX14}")
|
set(Intel16_CXX14 "__INTEL_COMPILER >= 1600 && ${DETECT_CXX14}")
|
||||||
set(_cmake_feature_test_cxx_aggregate_default_initializers "${Intel16_CXX14}")
|
set(_cmake_feature_test_cxx_aggregate_default_initializers "${Intel16_CXX14}")
|
||||||
|
@ -708,7 +708,9 @@ if(TARGET Doxygen::doxygen)
|
|||||||
if(_line MATCHES "([A-Z][A-Z0-9_]+)( *=)(.*)")
|
if(_line MATCHES "([A-Z][A-Z0-9_]+)( *=)(.*)")
|
||||||
set(_key "${CMAKE_MATCH_1}")
|
set(_key "${CMAKE_MATCH_1}")
|
||||||
set(_eql "${CMAKE_MATCH_2}")
|
set(_eql "${CMAKE_MATCH_2}")
|
||||||
string(REPLACE ";" "\\\n" _value "${CMAKE_MATCH_3}")
|
set(_value "${CMAKE_MATCH_3}")
|
||||||
|
string(REPLACE "\\" "\\\\" _value "${_value}")
|
||||||
|
string(REPLACE ";" "\\\n" _value "${_value}")
|
||||||
list(APPEND _Doxygen_tpl_params "${_key}${_eql}${_value}")
|
list(APPEND _Doxygen_tpl_params "${_key}${_eql}${_value}")
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -316,7 +316,7 @@ if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
|
|||||||
if (NOT ${_LIBRARIES})
|
if (NOT ${_LIBRARIES})
|
||||||
check_lapack_libraries(
|
check_lapack_libraries(
|
||||||
${_LIBRARIES}
|
${_LIBRARIES}
|
||||||
BLAS
|
LAPACK
|
||||||
${LAPACK_mkl_SEARCH_SYMBOL}
|
${LAPACK_mkl_SEARCH_SYMBOL}
|
||||||
""
|
""
|
||||||
""
|
""
|
||||||
@ -329,7 +329,7 @@ if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
|
|||||||
if (NOT ${_LIBRARIES})
|
if (NOT ${_LIBRARIES})
|
||||||
check_lapack_libraries(
|
check_lapack_libraries(
|
||||||
${_LIBRARIES}
|
${_LIBRARIES}
|
||||||
BLAS
|
LAPACK
|
||||||
${LAPACK_mkl_SEARCH_SYMBOL}
|
${LAPACK_mkl_SEARCH_SYMBOL}
|
||||||
""
|
""
|
||||||
"${IT}"
|
"${IT}"
|
||||||
|
@ -791,9 +791,10 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc"
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# On Apple we need CoreFoundation
|
# On Apple we need CoreFoundation and CoreServices
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
target_link_libraries(CMakeLib "-framework CoreFoundation")
|
target_link_libraries(CMakeLib "-framework CoreFoundation")
|
||||||
|
target_link_libraries(CMakeLib "-framework CoreServices")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32 AND NOT UNIX)
|
if(WIN32 AND NOT UNIX)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# CMake version number components.
|
# CMake version number components.
|
||||||
set(CMake_VERSION_MAJOR 3)
|
set(CMake_VERSION_MAJOR 3)
|
||||||
set(CMake_VERSION_MINOR 13)
|
set(CMake_VERSION_MINOR 13)
|
||||||
set(CMake_VERSION_PATCH 2)
|
set(CMake_VERSION_PATCH 4)
|
||||||
#set(CMake_VERSION_RC 0)
|
#set(CMake_VERSION_RC 0)
|
||||||
|
@ -2906,10 +2906,6 @@ bool cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
|
|||||||
::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||||
check_curl_result(res, "DOWNLOAD cannot set url: ");
|
check_curl_result(res, "DOWNLOAD cannot set url: ");
|
||||||
|
|
||||||
// enable auth
|
|
||||||
res = ::curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
|
|
||||||
check_curl_result(res, "DOWNLOAD cannot set httpauth: ");
|
|
||||||
|
|
||||||
// enable HTTP ERROR parsing
|
// enable HTTP ERROR parsing
|
||||||
res = ::curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
|
res = ::curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
|
||||||
check_curl_result(res, "DOWNLOAD cannot set http failure option: ");
|
check_curl_result(res, "DOWNLOAD cannot set http failure option: ");
|
||||||
@ -3209,10 +3205,6 @@ bool cmFileCommand::HandleUploadCommand(std::vector<std::string> const& args)
|
|||||||
res = ::curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
res = ::curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||||
check_curl_result(res, "UPLOAD cannot set url: ");
|
check_curl_result(res, "UPLOAD cannot set url: ");
|
||||||
|
|
||||||
// enable auth
|
|
||||||
res = ::curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
|
|
||||||
check_curl_result(res, "UPLOAD cannot set httpauth: ");
|
|
||||||
|
|
||||||
res =
|
res =
|
||||||
::curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cmWriteToMemoryCallback);
|
::curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cmWriteToMemoryCallback);
|
||||||
check_curl_result(res, "UPLOAD cannot set write function: ");
|
check_curl_result(res, "UPLOAD cannot set write function: ");
|
||||||
|
@ -1500,6 +1500,31 @@ bool cmGlobalGenerator::QtAutoGen()
|
|||||||
auto qtVersion = cmQtAutoGenInitializer::GetQtVersion(target);
|
auto qtVersion = cmQtAutoGenInitializer::GetQtVersion(target);
|
||||||
// don't do anything if there is no Qt4 or Qt5Core (which contains moc)
|
// don't do anything if there is no Qt4 or Qt5Core (which contains moc)
|
||||||
if (qtVersion.Major != 4 && qtVersion.Major != 5) {
|
if (qtVersion.Major != 4 && qtVersion.Major != 5) {
|
||||||
|
std::string msg = "AUTOGEN: No valid Qt version found for target ";
|
||||||
|
msg += target->GetName();
|
||||||
|
msg += ". ";
|
||||||
|
{
|
||||||
|
std::vector<std::string> lst;
|
||||||
|
if (mocEnabled) {
|
||||||
|
lst.emplace_back("AUTOMOC");
|
||||||
|
}
|
||||||
|
if (uicEnabled) {
|
||||||
|
lst.emplace_back("AUTOUIC");
|
||||||
|
}
|
||||||
|
if (rccEnabled) {
|
||||||
|
lst.emplace_back("AUTORCC");
|
||||||
|
}
|
||||||
|
msg += cmJoin(lst, ", ");
|
||||||
|
}
|
||||||
|
msg += " disabled. ";
|
||||||
|
msg += "Consider adding:\n";
|
||||||
|
if (uicEnabled) {
|
||||||
|
msg += " find_package(Qt5 COMPONENTS Widgets)\n";
|
||||||
|
} else {
|
||||||
|
msg += " find_package(Qt5 COMPONENTS Core)\n";
|
||||||
|
}
|
||||||
|
msg += "to your CMakeLists.txt file.";
|
||||||
|
target->Makefile->IssueMessage(cmake::AUTHOR_WARNING, msg);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,8 +210,29 @@ void cmInstallTargetGenerator::GenerateScriptForConfig(
|
|||||||
// An import library looks like a static library.
|
// An import library looks like a static library.
|
||||||
type = cmInstallType_STATIC_LIBRARY;
|
type = cmInstallType_STATIC_LIBRARY;
|
||||||
} else if (this->Target->IsFrameworkOnApple()) {
|
} else if (this->Target->IsFrameworkOnApple()) {
|
||||||
// There is a bug in cmInstallCommand if this fails.
|
// FIXME: In principle we should be able to
|
||||||
assert(this->NamelinkMode == NamelinkModeNone);
|
// assert(this->NamelinkMode == NamelinkModeNone);
|
||||||
|
// but since the current install() command implementation checks
|
||||||
|
// the FRAMEWORK property immediately instead of delaying until
|
||||||
|
// generate time, it is possible for project code to set the
|
||||||
|
// property after calling install(). In such a case, the install()
|
||||||
|
// command will use the LIBRARY code path and create two install
|
||||||
|
// generators, one for the namelink component (NamelinkModeOnly)
|
||||||
|
// and one for the primary artifact component (NamelinkModeSkip).
|
||||||
|
// Historically this was not diagnosed and resulted in silent
|
||||||
|
// installation of a framework to the LIBRARY destination.
|
||||||
|
// Retain that behavior.
|
||||||
|
switch (this->NamelinkMode) {
|
||||||
|
case NamelinkModeNone:
|
||||||
|
// Normal case.
|
||||||
|
break;
|
||||||
|
case NamelinkModeOnly:
|
||||||
|
// Assume the NamelinkModeSkip instance will install.
|
||||||
|
return;
|
||||||
|
case NamelinkModeSkip: {
|
||||||
|
// Proceed to install in the LIBRARY destination for compatibility.
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
|
||||||
// Install the whole framework directory.
|
// Install the whole framework directory.
|
||||||
type = cmInstallType_DIRECTORY;
|
type = cmInstallType_DIRECTORY;
|
||||||
|
@ -1281,6 +1281,12 @@ cmQtAutoGenInitializer::IntegerVersion cmQtAutoGenInitializer::GetQtVersion(
|
|||||||
if (qtMajor.empty()) {
|
if (qtMajor.empty()) {
|
||||||
qtMajor = makefile->GetSafeDefinition("Qt5Core_VERSION_MAJOR");
|
qtMajor = makefile->GetSafeDefinition("Qt5Core_VERSION_MAJOR");
|
||||||
}
|
}
|
||||||
|
if (qtMajor.empty()) {
|
||||||
|
const char* dirprop = makefile->GetProperty("Qt5Core_VERSION_MAJOR");
|
||||||
|
if (dirprop) {
|
||||||
|
qtMajor = dirprop;
|
||||||
|
}
|
||||||
|
}
|
||||||
{
|
{
|
||||||
const char* targetQtVersion =
|
const char* targetQtVersion =
|
||||||
target->GetLinkInterfaceDependentStringProperty("QT_MAJOR_VERSION", "");
|
target->GetLinkInterfaceDependentStringProperty("QT_MAJOR_VERSION", "");
|
||||||
@ -1294,6 +1300,12 @@ cmQtAutoGenInitializer::IntegerVersion cmQtAutoGenInitializer::GetQtVersion(
|
|||||||
if (!qtMajor.empty()) {
|
if (!qtMajor.empty()) {
|
||||||
if (qtMajor == "5") {
|
if (qtMajor == "5") {
|
||||||
qtMinor = makefile->GetSafeDefinition("Qt5Core_VERSION_MINOR");
|
qtMinor = makefile->GetSafeDefinition("Qt5Core_VERSION_MINOR");
|
||||||
|
if (qtMinor.empty()) {
|
||||||
|
const char* dirprop = makefile->GetProperty("Qt5Core_VERSION_MINOR");
|
||||||
|
if (dirprop) {
|
||||||
|
qtMinor = dirprop;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (qtMinor.empty()) {
|
if (qtMinor.empty()) {
|
||||||
qtMinor = makefile->GetSafeDefinition("QT_VERSION_MINOR");
|
qtMinor = makefile->GetSafeDefinition("QT_VERSION_MINOR");
|
||||||
|
@ -295,6 +295,9 @@ bool cmVSSetupAPIHelper::EnumerateAndChooseVSInstance()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: Add a way for caller to specify other versions.
|
||||||
|
std::wstring wantVersion = std::to_wstring(15) + L'.';
|
||||||
|
|
||||||
SmartCOMPtr<ISetupInstance> instance;
|
SmartCOMPtr<ISetupInstance> instance;
|
||||||
while (SUCCEEDED(enumInstances->Next(1, &instance, NULL)) && instance) {
|
while (SUCCEEDED(enumInstances->Next(1, &instance, NULL)) && instance) {
|
||||||
SmartCOMPtr<ISetupInstance2> instance2 = NULL;
|
SmartCOMPtr<ISetupInstance2> instance2 = NULL;
|
||||||
@ -310,6 +313,12 @@ bool cmVSSetupAPIHelper::EnumerateAndChooseVSInstance()
|
|||||||
instance = instance2 = NULL;
|
instance = instance2 = NULL;
|
||||||
|
|
||||||
if (isInstalled) {
|
if (isInstalled) {
|
||||||
|
// We are looking for a specific major version.
|
||||||
|
if (instanceInfo.Version.size() < wantVersion.size() ||
|
||||||
|
instanceInfo.Version.substr(0, wantVersion.size()) != wantVersion) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!this->SpecifiedVSInstallLocation.empty()) {
|
if (!this->SpecifiedVSInstallLocation.empty()) {
|
||||||
// We are looking for a specific instance.
|
// We are looking for a specific instance.
|
||||||
std::string currentVSLocation = instanceInfo.GetInstallLocation();
|
std::string currentVSLocation = instanceInfo.GetInstallLocation();
|
||||||
|
@ -609,16 +609,13 @@ bool cmake::FindPackage(const std::vector<std::string>& args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Parse the args
|
// Parse the args
|
||||||
void cmake::SetArgs(const std::vector<std::string>& args,
|
void cmake::SetArgs(const std::vector<std::string>& args)
|
||||||
bool directoriesSetBefore)
|
|
||||||
{
|
{
|
||||||
bool directoriesSet = directoriesSetBefore;
|
|
||||||
bool haveToolset = false;
|
bool haveToolset = false;
|
||||||
bool havePlatform = false;
|
bool havePlatform = false;
|
||||||
for (unsigned int i = 1; i < args.size(); ++i) {
|
for (unsigned int i = 1; i < args.size(); ++i) {
|
||||||
std::string const& arg = args[i];
|
std::string const& arg = args[i];
|
||||||
if (arg.find("-H", 0) == 0 || arg.find("-S", 0) == 0) {
|
if (arg.find("-H", 0) == 0 || arg.find("-S", 0) == 0) {
|
||||||
directoriesSet = true;
|
|
||||||
std::string path = arg.substr(2);
|
std::string path = arg.substr(2);
|
||||||
if (path.empty()) {
|
if (path.empty()) {
|
||||||
++i;
|
++i;
|
||||||
@ -639,7 +636,6 @@ void cmake::SetArgs(const std::vector<std::string>& args,
|
|||||||
} else if (arg.find("-O", 0) == 0) {
|
} else if (arg.find("-O", 0) == 0) {
|
||||||
// There is no local generate anymore. Ignore -O option.
|
// There is no local generate anymore. Ignore -O option.
|
||||||
} else if (arg.find("-B", 0) == 0) {
|
} else if (arg.find("-B", 0) == 0) {
|
||||||
directoriesSet = true;
|
|
||||||
std::string path = arg.substr(2);
|
std::string path = arg.substr(2);
|
||||||
if (path.empty()) {
|
if (path.empty()) {
|
||||||
++i;
|
++i;
|
||||||
@ -676,10 +672,25 @@ void cmake::SetArgs(const std::vector<std::string>& args,
|
|||||||
#endif
|
#endif
|
||||||
else if (arg.find("-D", 0) == 0) {
|
else if (arg.find("-D", 0) == 0) {
|
||||||
// skip for now
|
// skip for now
|
||||||
|
// in case '-D var=val' is given, also skip the next
|
||||||
|
// in case '-Dvar=val' is given, don't skip the next
|
||||||
|
if (arg.size() == 2) {
|
||||||
|
++i;
|
||||||
|
}
|
||||||
} else if (arg.find("-U", 0) == 0) {
|
} else if (arg.find("-U", 0) == 0) {
|
||||||
// skip for now
|
// skip for now
|
||||||
|
// in case '-U var' is given, also skip the next
|
||||||
|
// in case '-Uvar' is given, don't skip the next
|
||||||
|
if (arg.size() == 2) {
|
||||||
|
++i;
|
||||||
|
}
|
||||||
} else if (arg.find("-C", 0) == 0) {
|
} else if (arg.find("-C", 0) == 0) {
|
||||||
// skip for now
|
// skip for now
|
||||||
|
// in case '-C path' is given, also skip the next
|
||||||
|
// in case '-Cpath' is given, don't skip the next
|
||||||
|
if (arg.size() == 2) {
|
||||||
|
++i;
|
||||||
|
}
|
||||||
} else if (arg.find("-P", 0) == 0) {
|
} else if (arg.find("-P", 0) == 0) {
|
||||||
// skip for now
|
// skip for now
|
||||||
i++;
|
i++;
|
||||||
@ -786,16 +797,30 @@ void cmake::SetArgs(const std::vector<std::string>& args,
|
|||||||
this->SetGlobalGenerator(gen);
|
this->SetGlobalGenerator(gen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// no option assume it is the path to the source
|
// no option assume it is the path to the source or an existing build
|
||||||
else {
|
else {
|
||||||
directoriesSet = true;
|
|
||||||
this->SetDirectoriesFromFile(arg.c_str());
|
this->SetDirectoriesFromFile(arg.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!directoriesSet) {
|
|
||||||
this->SetHomeOutputDirectory(cmSystemTools::GetCurrentWorkingDirectory());
|
const bool haveSourceDir = !this->GetHomeDirectory().empty();
|
||||||
|
const bool haveBinaryDir = !this->GetHomeOutputDirectory().empty();
|
||||||
|
|
||||||
|
if (this->CurrentWorkingMode == cmake::NORMAL_MODE && !haveSourceDir &&
|
||||||
|
!haveBinaryDir) {
|
||||||
|
this->IssueMessage(
|
||||||
|
cmake::WARNING,
|
||||||
|
"No source or binary directory provided. Both will be assumed to be "
|
||||||
|
"the same as the current working directory, but note that this "
|
||||||
|
"warning will become a fatal error in future CMake releases.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!haveSourceDir) {
|
||||||
this->SetHomeDirectory(cmSystemTools::GetCurrentWorkingDirectory());
|
this->SetHomeDirectory(cmSystemTools::GetCurrentWorkingDirectory());
|
||||||
}
|
}
|
||||||
|
if (!haveBinaryDir) {
|
||||||
|
this->SetHomeOutputDirectory(cmSystemTools::GetCurrentWorkingDirectory());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmake::SetDirectoriesFromFile(const char* arg)
|
void cmake::SetDirectoriesFromFile(const char* arg)
|
||||||
|
@ -275,8 +275,7 @@ public:
|
|||||||
int GetSystemInformation(std::vector<std::string>&);
|
int GetSystemInformation(std::vector<std::string>&);
|
||||||
|
|
||||||
///! Parse command line arguments
|
///! Parse command line arguments
|
||||||
void SetArgs(const std::vector<std::string>&,
|
void SetArgs(const std::vector<std::string>& args);
|
||||||
bool directoriesSetBefore = false);
|
|
||||||
|
|
||||||
///! Is this cmake running as a result of a TRY_COMPILE command
|
///! Is this cmake running as a result of a TRY_COMPILE command
|
||||||
bool GetIsInTryCompile() const;
|
bool GetIsInTryCompile() const;
|
||||||
|
@ -285,12 +285,12 @@ int do_cmake(int ac, char const* const* av)
|
|||||||
} else if (cmHasLiteralPrefix(av[i], "-P")) {
|
} else if (cmHasLiteralPrefix(av[i], "-P")) {
|
||||||
if (i == ac - 1) {
|
if (i == ac - 1) {
|
||||||
cmSystemTools::Error("No script specified for argument -P");
|
cmSystemTools::Error("No script specified for argument -P");
|
||||||
} else {
|
return 1;
|
||||||
workingMode = cmake::SCRIPT_MODE;
|
|
||||||
args.push_back(av[i]);
|
|
||||||
i++;
|
|
||||||
args.push_back(av[i]);
|
|
||||||
}
|
}
|
||||||
|
workingMode = cmake::SCRIPT_MODE;
|
||||||
|
args.push_back(av[i]);
|
||||||
|
i++;
|
||||||
|
args.push_back(av[i]);
|
||||||
} else if (cmHasLiteralPrefix(av[i], "--find-package")) {
|
} else if (cmHasLiteralPrefix(av[i], "--find-package")) {
|
||||||
workingMode = cmake::FIND_PACKAGE_MODE;
|
workingMode = cmake::FIND_PACKAGE_MODE;
|
||||||
args.push_back(av[i]);
|
args.push_back(av[i]);
|
||||||
|
3
Tests/RunCMake/Autogen/CMakeLists.txt
Normal file
3
Tests/RunCMake/Autogen/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
project(${RunCMake_TEST} NONE)
|
||||||
|
include(${RunCMake_TEST}.cmake)
|
8
Tests/RunCMake/Autogen/NoQt-stderr.txt
Normal file
8
Tests/RunCMake/Autogen/NoQt-stderr.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
^CMake Warning \(dev\) in CMakeLists.txt:
|
||||||
|
AUTOGEN: No valid Qt version found for target main. AUTOMOC, AUTOUIC,
|
||||||
|
AUTORCC disabled. Consider adding:
|
||||||
|
|
||||||
|
find_package\(Qt5 COMPONENTS Widgets\)
|
||||||
|
|
||||||
|
to your CMakeLists.txt file.
|
||||||
|
This warning is for project developers. Use -Wno-dev to suppress it.
|
6
Tests/RunCMake/Autogen/NoQt.cmake
Normal file
6
Tests/RunCMake/Autogen/NoQt.cmake
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
enable_language(CXX)
|
||||||
|
|
||||||
|
add_executable(main empty.cpp)
|
||||||
|
set_property(TARGET main PROPERTY AUTOMOC 1)
|
||||||
|
set_property(TARGET main PROPERTY AUTORCC 1)
|
||||||
|
set_property(TARGET main PROPERTY AUTOUIC 1)
|
13
Tests/RunCMake/Autogen/QtInFunction.cmake
Normal file
13
Tests/RunCMake/Autogen/QtInFunction.cmake
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
enable_language(CXX)
|
||||||
|
|
||||||
|
function (use_autogen target)
|
||||||
|
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
|
||||||
|
set(Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}" PARENT_SCOPE)
|
||||||
|
set(Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MINOR}" PARENT_SCOPE)
|
||||||
|
set_property(TARGET "${target}" PROPERTY AUTOMOC 1)
|
||||||
|
set_property(TARGET "${target}" PROPERTY AUTORCC 1)
|
||||||
|
set_property(TARGET "${target}" PROPERTY AUTOUIC 1)
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
add_executable(main empty.cpp)
|
||||||
|
use_autogen(main)
|
8
Tests/RunCMake/Autogen/QtInFunctionNested-stderr.txt
Normal file
8
Tests/RunCMake/Autogen/QtInFunctionNested-stderr.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
^CMake Warning \(dev\) in CMakeLists.txt:
|
||||||
|
AUTOGEN: No valid Qt version found for target main. AUTOMOC, AUTOUIC,
|
||||||
|
AUTORCC disabled. Consider adding:
|
||||||
|
|
||||||
|
find_package\(Qt5 COMPONENTS Widgets\)
|
||||||
|
|
||||||
|
to your CMakeLists.txt file.
|
||||||
|
This warning is for project developers. Use -Wno-dev to suppress it.
|
17
Tests/RunCMake/Autogen/QtInFunctionNested.cmake
Normal file
17
Tests/RunCMake/Autogen/QtInFunctionNested.cmake
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
enable_language(CXX)
|
||||||
|
|
||||||
|
function (use_autogen target)
|
||||||
|
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
|
||||||
|
set(Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}" PARENT_SCOPE)
|
||||||
|
set(Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MINOR}" PARENT_SCOPE)
|
||||||
|
set_property(TARGET "${target}" PROPERTY AUTOMOC 1)
|
||||||
|
set_property(TARGET "${target}" PROPERTY AUTORCC 1)
|
||||||
|
set_property(TARGET "${target}" PROPERTY AUTOUIC 1)
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
function (wrap_autogen target)
|
||||||
|
use_autogen("${target}")
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
add_executable(main empty.cpp)
|
||||||
|
wrap_autogen(main)
|
21
Tests/RunCMake/Autogen/QtInFunctionProperty.cmake
Normal file
21
Tests/RunCMake/Autogen/QtInFunctionProperty.cmake
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
enable_language(CXX)
|
||||||
|
|
||||||
|
function (use_autogen target)
|
||||||
|
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
|
||||||
|
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
PROPERTY
|
||||||
|
Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}")
|
||||||
|
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
PROPERTY
|
||||||
|
Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MINOR}")
|
||||||
|
set_property(TARGET "${target}" PROPERTY AUTOMOC 1)
|
||||||
|
set_property(TARGET "${target}" PROPERTY AUTORCC 1)
|
||||||
|
set_property(TARGET "${target}" PROPERTY AUTOUIC 1)
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
function (wrap_autogen target)
|
||||||
|
use_autogen("${target}")
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
add_executable(main empty.cpp)
|
||||||
|
wrap_autogen(main)
|
8
Tests/RunCMake/Autogen/RunCMakeTest.cmake
Normal file
8
Tests/RunCMake/Autogen/RunCMakeTest.cmake
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
include(RunCMake)
|
||||||
|
|
||||||
|
run_cmake(NoQt)
|
||||||
|
if (with_qt5)
|
||||||
|
run_cmake(QtInFunction)
|
||||||
|
run_cmake(QtInFunctionNested)
|
||||||
|
run_cmake(QtInFunctionProperty)
|
||||||
|
endif ()
|
0
Tests/RunCMake/Autogen/empty.cpp
Normal file
0
Tests/RunCMake/Autogen/empty.cpp
Normal file
@ -142,6 +142,14 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_RunCMake_test(AndroidTestUtilities)
|
add_RunCMake_test(AndroidTestUtilities)
|
||||||
|
set(autogen_with_qt5 FALSE)
|
||||||
|
if(CMake_TEST_Qt5)
|
||||||
|
find_package(Qt5Widgets QUIET NO_MODULE)
|
||||||
|
endif()
|
||||||
|
if(CMake_TEST_Qt5 AND Qt5Widgets_FOUND)
|
||||||
|
set(autogen_with_qt5 TRUE)
|
||||||
|
endif ()
|
||||||
|
add_RunCMake_test(Autogen -Dwith_qt5=${autogen_with_qt5})
|
||||||
add_RunCMake_test(BuildDepends)
|
add_RunCMake_test(BuildDepends)
|
||||||
if(UNIX AND "${CMAKE_GENERATOR}" MATCHES "Unix Makefiles|Ninja")
|
if(UNIX AND "${CMAKE_GENERATOR}" MATCHES "Unix Makefiles|Ninja")
|
||||||
add_RunCMake_test(Byproducts)
|
add_RunCMake_test(Byproducts)
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
^CMake Error: Error processing file: nosuchcachefile.txt
|
^CMake Error: Error processing file: nosuchcachefile.txt
|
||||||
CMake Error: The source directory ".*/Tests/RunCMake/CommandLine/C-no-file-build/nosuchcachefile.txt" does not exist.
|
CMake Error: The source directory ".*/Tests/RunCMake/CommandLine/C-no-file-build" does not appear to contain CMakeLists.txt.
|
||||||
Specify --help for usage, or press the help button on the CMake GUI.$
|
Specify --help for usage, or press the help button on the CMake GUI.$
|
||||||
|
1
Tests/RunCMake/CommandLine/Cno-file-result.txt
Normal file
1
Tests/RunCMake/CommandLine/Cno-file-result.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
3
Tests/RunCMake/CommandLine/Cno-file-stderr.txt
Normal file
3
Tests/RunCMake/CommandLine/Cno-file-stderr.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
^CMake Error: Error processing file: nosuchcachefile.txt
|
||||||
|
CMake Error: The source directory ".*/Tests/RunCMake/CommandLine/Cno-file-build" does not appear to contain CMakeLists.txt.
|
||||||
|
Specify --help for usage, or press the help button on the CMake GUI.$
|
1
Tests/RunCMake/CommandLine/D-no-src-result.txt
Normal file
1
Tests/RunCMake/CommandLine/D-no-src-result.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
2
Tests/RunCMake/CommandLine/D-no-src-stderr.txt
Normal file
2
Tests/RunCMake/CommandLine/D-no-src-stderr.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
^CMake Error: The source directory ".*/Tests/RunCMake/CommandLine/D-no-src-build" does not appear to contain CMakeLists.txt.
|
||||||
|
Specify --help for usage, or press the help button on the CMake GUI.$
|
1
Tests/RunCMake/CommandLine/Dno-src-result.txt
Normal file
1
Tests/RunCMake/CommandLine/Dno-src-result.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
2
Tests/RunCMake/CommandLine/Dno-src-stderr.txt
Normal file
2
Tests/RunCMake/CommandLine/Dno-src-stderr.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
^CMake Error: The source directory ".*/Tests/RunCMake/CommandLine/Dno-src-build" does not appear to contain CMakeLists.txt.
|
||||||
|
Specify --help for usage, or press the help button on the CMake GUI.$
|
@ -4,12 +4,17 @@ include(RunCMake)
|
|||||||
|
|
||||||
run_cmake_command(NoArgs ${CMAKE_COMMAND})
|
run_cmake_command(NoArgs ${CMAKE_COMMAND})
|
||||||
run_cmake_command(Wizard ${CMAKE_COMMAND} -i)
|
run_cmake_command(Wizard ${CMAKE_COMMAND} -i)
|
||||||
run_cmake_command(C-no-arg ${CMAKE_COMMAND} -C)
|
run_cmake_command(C-no-arg ${CMAKE_COMMAND} -B DummyBuildDir -C)
|
||||||
run_cmake_command(C-no-file ${CMAKE_COMMAND} -C nosuchcachefile.txt)
|
run_cmake_command(C-no-file ${CMAKE_COMMAND} -B DummyBuildDir -C nosuchcachefile.txt)
|
||||||
|
run_cmake_command(Cno-file ${CMAKE_COMMAND} -B DummyBuildDir -Cnosuchcachefile.txt)
|
||||||
run_cmake_command(cache-no-file ${CMAKE_COMMAND} nosuchsubdir/CMakeCache.txt)
|
run_cmake_command(cache-no-file ${CMAKE_COMMAND} nosuchsubdir/CMakeCache.txt)
|
||||||
run_cmake_command(lists-no-file ${CMAKE_COMMAND} nosuchsubdir/CMakeLists.txt)
|
run_cmake_command(lists-no-file ${CMAKE_COMMAND} nosuchsubdir/CMakeLists.txt)
|
||||||
run_cmake_command(D-no-arg ${CMAKE_COMMAND} -D)
|
run_cmake_command(D-no-arg ${CMAKE_COMMAND} -B DummyBuildDir -D)
|
||||||
run_cmake_command(U-no-arg ${CMAKE_COMMAND} -U)
|
run_cmake_command(D-no-src ${CMAKE_COMMAND} -B DummyBuildDir -D VAR=VALUE)
|
||||||
|
run_cmake_command(Dno-src ${CMAKE_COMMAND} -B DummyBuildDir -DVAR=VALUE)
|
||||||
|
run_cmake_command(U-no-arg ${CMAKE_COMMAND} -B DummyBuildDir -U)
|
||||||
|
run_cmake_command(U-no-src ${CMAKE_COMMAND} -B DummyBuildDir -U VAR)
|
||||||
|
run_cmake_command(Uno-src ${CMAKE_COMMAND} -B DummyBuildDir -UVAR)
|
||||||
run_cmake_command(E-no-arg ${CMAKE_COMMAND} -E)
|
run_cmake_command(E-no-arg ${CMAKE_COMMAND} -E)
|
||||||
run_cmake_command(E_capabilities ${CMAKE_COMMAND} -E capabilities)
|
run_cmake_command(E_capabilities ${CMAKE_COMMAND} -E capabilities)
|
||||||
run_cmake_command(E_capabilities-arg ${CMAKE_COMMAND} -E capabilities --extra-arg)
|
run_cmake_command(E_capabilities-arg ${CMAKE_COMMAND} -E capabilities --extra-arg)
|
||||||
@ -27,8 +32,8 @@ run_cmake_command(E___run_co_compile-bad-iwyu ${CMAKE_COMMAND} -E __run_co_compi
|
|||||||
run_cmake_command(E___run_co_compile-no--- ${CMAKE_COMMAND} -E __run_co_compile --iwyu=iwyu-does-not-exist command-does-not-exist)
|
run_cmake_command(E___run_co_compile-no--- ${CMAKE_COMMAND} -E __run_co_compile --iwyu=iwyu-does-not-exist command-does-not-exist)
|
||||||
run_cmake_command(E___run_co_compile-no-cc ${CMAKE_COMMAND} -E __run_co_compile --iwyu=iwyu-does-not-exist --)
|
run_cmake_command(E___run_co_compile-no-cc ${CMAKE_COMMAND} -E __run_co_compile --iwyu=iwyu-does-not-exist --)
|
||||||
|
|
||||||
run_cmake_command(G_no-arg ${CMAKE_COMMAND} -G)
|
run_cmake_command(G_no-arg ${CMAKE_COMMAND} -B DummyBuildDir -G)
|
||||||
run_cmake_command(G_bad-arg ${CMAKE_COMMAND} -G NoSuchGenerator)
|
run_cmake_command(G_bad-arg ${CMAKE_COMMAND} -B DummyBuildDir -G NoSuchGenerator)
|
||||||
run_cmake_command(P_no-arg ${CMAKE_COMMAND} -P)
|
run_cmake_command(P_no-arg ${CMAKE_COMMAND} -P)
|
||||||
run_cmake_command(P_no-file ${CMAKE_COMMAND} -P nosuchscriptfile.cmake)
|
run_cmake_command(P_no-file ${CMAKE_COMMAND} -P nosuchscriptfile.cmake)
|
||||||
|
|
||||||
@ -49,6 +54,17 @@ run_cmake_command(cache-empty-entry
|
|||||||
${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-empty-entry/)
|
${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-empty-entry/)
|
||||||
|
|
||||||
function(run_ExplicitDirs)
|
function(run_ExplicitDirs)
|
||||||
|
set(source_dir ${RunCMake_BINARY_DIR}/ExplicitDirsMissing)
|
||||||
|
|
||||||
|
file(REMOVE_RECURSE "${source_dir}")
|
||||||
|
file(MAKE_DIRECTORY "${source_dir}")
|
||||||
|
file(WRITE ${source_dir}/CMakeLists.txt [=[
|
||||||
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
project(ExplicitDirsMissing LANGUAGES NONE)
|
||||||
|
]=])
|
||||||
|
run_cmake_command(no-S-B ${CMAKE_COMMAND} -E chdir ${source_dir}
|
||||||
|
${CMAKE_COMMAND} -DFOO=BAR)
|
||||||
|
|
||||||
set(source_dir ${RunCMake_SOURCE_DIR}/ExplicitDirs)
|
set(source_dir ${RunCMake_SOURCE_DIR}/ExplicitDirs)
|
||||||
set(binary_dir ${RunCMake_BINARY_DIR}/ExplicitDirs-build)
|
set(binary_dir ${RunCMake_BINARY_DIR}/ExplicitDirs-build)
|
||||||
|
|
||||||
@ -323,9 +339,9 @@ set(RunCMake_TEST_OPTIONS -Wdev -Wno-dev)
|
|||||||
run_cmake(Wno-dev)
|
run_cmake(Wno-dev)
|
||||||
unset(RunCMake_TEST_OPTIONS)
|
unset(RunCMake_TEST_OPTIONS)
|
||||||
|
|
||||||
run_cmake_command(W_bad-arg1 ${CMAKE_COMMAND} -W)
|
run_cmake_command(W_bad-arg1 ${CMAKE_COMMAND} -B DummyBuildDir -W)
|
||||||
run_cmake_command(W_bad-arg2 ${CMAKE_COMMAND} -Wno-)
|
run_cmake_command(W_bad-arg2 ${CMAKE_COMMAND} -B DummyBuildDir -Wno-)
|
||||||
run_cmake_command(W_bad-arg3 ${CMAKE_COMMAND} -Werror=)
|
run_cmake_command(W_bad-arg3 ${CMAKE_COMMAND} -B DummyBuildDir -Werror=)
|
||||||
|
|
||||||
set(RunCMake_TEST_OPTIONS --debug-output)
|
set(RunCMake_TEST_OPTIONS --debug-output)
|
||||||
run_cmake(debug-output)
|
run_cmake(debug-output)
|
||||||
|
1
Tests/RunCMake/CommandLine/U-no-src-result.txt
Normal file
1
Tests/RunCMake/CommandLine/U-no-src-result.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
2
Tests/RunCMake/CommandLine/U-no-src-stderr.txt
Normal file
2
Tests/RunCMake/CommandLine/U-no-src-stderr.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
^CMake Error: The source directory ".*/Tests/RunCMake/CommandLine/U-no-src-build" does not appear to contain CMakeLists.txt.
|
||||||
|
Specify --help for usage, or press the help button on the CMake GUI.$
|
1
Tests/RunCMake/CommandLine/Uno-src-result.txt
Normal file
1
Tests/RunCMake/CommandLine/Uno-src-result.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
2
Tests/RunCMake/CommandLine/Uno-src-stderr.txt
Normal file
2
Tests/RunCMake/CommandLine/Uno-src-stderr.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
^CMake Error: The source directory ".*/Tests/RunCMake/CommandLine/Uno-src-build" does not appear to contain CMakeLists.txt.
|
||||||
|
Specify --help for usage, or press the help button on the CMake GUI.$
|
4
Tests/RunCMake/CommandLine/no-S-B-stderr.txt
Normal file
4
Tests/RunCMake/CommandLine/no-S-B-stderr.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
CMake Warning:
|
||||||
|
No source or binary directory provided. Both will be assumed to be the
|
||||||
|
same as the current working directory, but note that this warning will
|
||||||
|
become a fatal error in future CMake releases.
|
5
Tests/RunCMake/Framework/InstallBeforeFramework.cmake
Normal file
5
Tests/RunCMake/Framework/InstallBeforeFramework.cmake
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
enable_language(C)
|
||||||
|
|
||||||
|
add_library(foo SHARED foo.c)
|
||||||
|
install(TARGETS foo LIBRARY DESTINATION lib)
|
||||||
|
set_property(TARGET foo PROPERTY FRAMEWORK TRUE)
|
@ -1,5 +1,7 @@
|
|||||||
include(RunCMake)
|
include(RunCMake)
|
||||||
|
|
||||||
|
run_cmake(InstallBeforeFramework)
|
||||||
|
|
||||||
function(framework_layout_test Name Toolchain Type)
|
function(framework_layout_test Name Toolchain Type)
|
||||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${Toolchain}${Type}FrameworkLayout-build)
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${Toolchain}${Type}FrameworkLayout-build)
|
||||||
set(RunCMake_TEST_NO_CLEAN 1)
|
set(RunCMake_TEST_NO_CLEAN 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user