mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-24 19:59:47 +08:00
Autogen: New short InfoGet functions
This commit is contained in:
committed by
Brad King
parent
154d8339f7
commit
3bf28f5ed0
@@ -16,7 +16,7 @@ set(AM_QT_UIC_EXECUTABLE @_qt_uic_executable@)
|
||||
set(AM_QT_RCC_EXECUTABLE @_qt_rcc_executable@)
|
||||
# MOC settings
|
||||
set(AM_MOC_SKIP @_moc_skip@)
|
||||
set(AM_MOC_COMPILE_DEFINITIONS @_moc_compile_defs@)
|
||||
set(AM_MOC_DEFINITIONS @_moc_compile_defs@)
|
||||
set(AM_MOC_INCLUDES @_moc_incs@)
|
||||
set(AM_MOC_OPTIONS @_moc_options@)
|
||||
set(AM_MOC_RELAXED_MODE @_moc_relaxed_mode@)
|
||||
|
||||
@@ -972,7 +972,7 @@ void cmQtAutoGeneratorInitializer::SetupAutoGenerateTarget(
|
||||
it = configMocDefines.begin(),
|
||||
end = configMocDefines.end();
|
||||
it != end; ++it) {
|
||||
infoFile << "set(AM_MOC_COMPILE_DEFINITIONS_" << it->first << " "
|
||||
infoFile << "set(AM_MOC_DEFINITIONS_" << it->first << " "
|
||||
<< it->second << ")\n";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,20 +55,38 @@ static std::string Quoted(const std::string& text)
|
||||
return res;
|
||||
}
|
||||
|
||||
static std::string GetConfigDefinition(cmMakefile* makefile,
|
||||
const std::string& key,
|
||||
const std::string& config)
|
||||
static void InfoGet(cmMakefile* makefile, const char* key, std::string& value)
|
||||
{
|
||||
std::string keyConf = key;
|
||||
if (!config.empty()) {
|
||||
keyConf += "_";
|
||||
keyConf += config;
|
||||
value = makefile->GetSafeDefinition(key);
|
||||
}
|
||||
|
||||
static void InfoGet(cmMakefile* makefile, const char* key, bool& value)
|
||||
{
|
||||
value = makefile->IsOn(key);
|
||||
}
|
||||
|
||||
static void InfoGet(cmMakefile* makefile, const char* key,
|
||||
std::vector<std::string>& list)
|
||||
{
|
||||
cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition(key), list);
|
||||
}
|
||||
|
||||
static void InfoGet(cmMakefile* makefile, const char* key,
|
||||
const std::string& config, std::vector<std::string>& list)
|
||||
{
|
||||
const char* valueConf = CM_NULLPTR;
|
||||
{
|
||||
std::string keyConf = key;
|
||||
if (!config.empty()) {
|
||||
keyConf += "_";
|
||||
keyConf += config;
|
||||
}
|
||||
valueConf = makefile->GetDefinition(keyConf);
|
||||
}
|
||||
const char* valueConf = makefile->GetDefinition(keyConf);
|
||||
if (valueConf != CM_NULLPTR) {
|
||||
return valueConf;
|
||||
if (valueConf == CM_NULLPTR) {
|
||||
valueConf = makefile->GetSafeDefinition(key);
|
||||
}
|
||||
return makefile->GetSafeDefinition(key);
|
||||
cmSystemTools::ExpandListArgument(valueConf, list);
|
||||
}
|
||||
|
||||
static std::string SettingsFile(const std::string& targetDirectory)
|
||||
@@ -328,59 +346,44 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(
|
||||
}
|
||||
|
||||
// - Target names
|
||||
this->OriginTargetName =
|
||||
makefile->GetSafeDefinition("AM_ORIGIN_TARGET_NAME");
|
||||
this->AutogenTargetName = makefile->GetSafeDefinition("AM_TARGET_NAME");
|
||||
InfoGet(makefile, "AM_TARGET_NAME", this->AutogenTargetName);
|
||||
InfoGet(makefile, "AM_ORIGIN_TARGET_NAME", this->OriginTargetName);
|
||||
|
||||
// - Files and directories
|
||||
this->ProjectSourceDir = makefile->GetSafeDefinition("AM_CMAKE_SOURCE_DIR");
|
||||
this->ProjectBinaryDir = makefile->GetSafeDefinition("AM_CMAKE_BINARY_DIR");
|
||||
this->CurrentSourceDir =
|
||||
makefile->GetSafeDefinition("AM_CMAKE_CURRENT_SOURCE_DIR");
|
||||
this->CurrentBinaryDir =
|
||||
makefile->GetSafeDefinition("AM_CMAKE_CURRENT_BINARY_DIR");
|
||||
|
||||
cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition("AM_SOURCES"),
|
||||
this->Sources);
|
||||
cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition("AM_HEADERS"),
|
||||
this->Headers);
|
||||
this->IncludeProjectDirsBefore =
|
||||
makefile->IsOn("AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE");
|
||||
InfoGet(makefile, "AM_CMAKE_SOURCE_DIR", this->ProjectSourceDir);
|
||||
InfoGet(makefile, "AM_CMAKE_BINARY_DIR", this->ProjectBinaryDir);
|
||||
InfoGet(makefile, "AM_CMAKE_CURRENT_SOURCE_DIR", this->CurrentSourceDir);
|
||||
InfoGet(makefile, "AM_CMAKE_CURRENT_BINARY_DIR", this->CurrentBinaryDir);
|
||||
InfoGet(makefile, "AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE",
|
||||
this->IncludeProjectDirsBefore);
|
||||
InfoGet(makefile, "AM_SOURCES", this->Sources);
|
||||
InfoGet(makefile, "AM_HEADERS", this->Headers);
|
||||
|
||||
// - Qt environment
|
||||
this->QtMajorVersion = makefile->GetSafeDefinition("AM_QT_VERSION_MAJOR");
|
||||
if (this->QtMajorVersion == "") {
|
||||
this->QtMajorVersion =
|
||||
makefile->GetSafeDefinition("AM_Qt5Core_VERSION_MAJOR");
|
||||
InfoGet(makefile, "AM_QT_VERSION_MAJOR", this->QtMajorVersion);
|
||||
if (this->QtMajorVersion.empty()) {
|
||||
InfoGet(makefile, "AM_Qt5Core_VERSION_MAJOR", this->QtMajorVersion);
|
||||
}
|
||||
InfoGet(makefile, "AM_QT_MOC_EXECUTABLE", this->MocExecutable);
|
||||
InfoGet(makefile, "AM_QT_UIC_EXECUTABLE", this->UicExecutable);
|
||||
InfoGet(makefile, "AM_QT_RCC_EXECUTABLE", this->RccExecutable);
|
||||
// Check Qt version
|
||||
if ((this->QtMajorVersion != "4") && (this->QtMajorVersion != "5")) {
|
||||
this->LogError("AutoGen: Error: Unsupported Qt version: " +
|
||||
Quoted(this->QtMajorVersion));
|
||||
return false;
|
||||
}
|
||||
// Qt executables
|
||||
this->MocExecutable = makefile->GetSafeDefinition("AM_QT_MOC_EXECUTABLE");
|
||||
this->UicExecutable = makefile->GetSafeDefinition("AM_QT_UIC_EXECUTABLE");
|
||||
this->RccExecutable = makefile->GetSafeDefinition("AM_QT_RCC_EXECUTABLE");
|
||||
|
||||
// - Moc
|
||||
if (this->MocEnabled()) {
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_MOC_SKIP"), this->MocSkipList);
|
||||
cmSystemTools::ExpandListArgument(
|
||||
GetConfigDefinition(makefile, "AM_MOC_COMPILE_DEFINITIONS", config),
|
||||
this->MocDefinitions);
|
||||
cmSystemTools::ExpandListArgument(
|
||||
GetConfigDefinition(makefile, "AM_MOC_INCLUDES", config),
|
||||
this->MocIncludePaths);
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_MOC_OPTIONS"), this->MocOptions);
|
||||
InfoGet(makefile, "AM_MOC_SKIP", this->MocSkipList);
|
||||
InfoGet(makefile, "AM_MOC_DEFINITIONS", config, this->MocDefinitions);
|
||||
InfoGet(makefile, "AM_MOC_INCLUDES", config, this->MocIncludePaths);
|
||||
InfoGet(makefile, "AM_MOC_OPTIONS", this->MocOptions);
|
||||
InfoGet(makefile, "AM_MOC_RELAXED_MODE", this->MocRelaxedMode);
|
||||
{
|
||||
std::vector<std::string> mocDependFilters;
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_MOC_DEPEND_FILTERS"),
|
||||
mocDependFilters);
|
||||
InfoGet(makefile, "AM_MOC_DEPEND_FILTERS", mocDependFilters);
|
||||
// Insert Q_PLUGIN_METADATA dependency filter
|
||||
if (this->QtMajorVersion != "4") {
|
||||
this->MocDependFilterPush("Q_PLUGIN_METADATA",
|
||||
@@ -403,24 +406,18 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
this->MocRelaxedMode = makefile->IsOn("AM_MOC_RELAXED_MODE");
|
||||
}
|
||||
|
||||
// - Uic
|
||||
if (this->UicEnabled()) {
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_UIC_SKIP"), this->UicSkipList);
|
||||
cmSystemTools::ExpandListArgument(
|
||||
GetConfigDefinition(makefile, "AM_UIC_TARGET_OPTIONS", config),
|
||||
this->UicTargetOptions);
|
||||
InfoGet(makefile, "AM_UIC_SKIP", this->UicSkipList);
|
||||
InfoGet(makefile, "AM_UIC_SEARCH_PATHS", this->UicSearchPaths);
|
||||
InfoGet(makefile, "AM_UIC_TARGET_OPTIONS", config, this->UicTargetOptions);
|
||||
{
|
||||
std::vector<std::string> uicFilesVec;
|
||||
std::vector<std::string> uicOptionsVec;
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_UIC_OPTIONS_FILES"), uicFilesVec);
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_UIC_OPTIONS_OPTIONS"), uicOptionsVec);
|
||||
InfoGet(makefile, "AM_UIC_OPTIONS_FILES", uicFilesVec);
|
||||
InfoGet(makefile, "AM_UIC_OPTIONS_OPTIONS", uicOptionsVec);
|
||||
// Compare list sizes
|
||||
if (uicFilesVec.size() == uicOptionsVec.size()) {
|
||||
for (std::vector<std::string>::iterator
|
||||
@@ -437,22 +434,16 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(
|
||||
return false;
|
||||
}
|
||||
}
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_UIC_SEARCH_PATHS"),
|
||||
this->UicSearchPaths);
|
||||
}
|
||||
|
||||
// - Rcc
|
||||
if (this->RccEnabled()) {
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_RCC_SOURCES"), this->RccSources);
|
||||
InfoGet(makefile, "AM_RCC_SOURCES", this->RccSources);
|
||||
{
|
||||
std::vector<std::string> rccFilesVec;
|
||||
std::vector<std::string> rccOptionsVec;
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_RCC_OPTIONS_FILES"), rccFilesVec);
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_RCC_OPTIONS_OPTIONS"), rccOptionsVec);
|
||||
InfoGet(makefile, "AM_RCC_OPTIONS_FILES", rccFilesVec);
|
||||
InfoGet(makefile, "AM_RCC_OPTIONS_OPTIONS", rccOptionsVec);
|
||||
if (rccFilesVec.size() != rccOptionsVec.size()) {
|
||||
this->LogError(
|
||||
"AutoGen: Error: RCC files/options lists size missmatch in: " +
|
||||
@@ -468,8 +459,7 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(
|
||||
}
|
||||
{
|
||||
std::vector<std::string> rccInputLists;
|
||||
cmSystemTools::ExpandListArgument(
|
||||
makefile->GetSafeDefinition("AM_RCC_INPUTS"), rccInputLists);
|
||||
InfoGet(makefile, "AM_RCC_INPUTS", rccInputLists);
|
||||
|
||||
// qrc files in the end of the list may have been empty
|
||||
if (rccInputLists.size() < this->RccSources.size()) {
|
||||
|
||||
Reference in New Issue
Block a user