Commit 758756d1 authored by Brad King's avatar Brad King 💬 Committed by Kitware Robot
Browse files

Merge topic 'ignore-werror-command-arg'

65f7053d

 COMPILE_WARNING_AS_ERROR: Add command-line option
Acked-by: Kitware Robot's avatarKitware Robot <kwrobot@kitware.com>
Merge-request: !7268
parents f808b190 65f7053d
......@@ -426,6 +426,11 @@ Options
in :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR`.
This flag tells CMake to warn about other files as well.
``--compile-no-warning-as-error``
Ignore target property :prop_tgt:`COMPILE_WARNING_AS_ERROR` and variable
:variable:`CMAKE_COMPILE_WARNING_AS_ERROR`, preventing warnings from being
treated as errors on compile.
``--profiling-output=<path>``
Used in conjunction with ``--profiling-format`` to output to a given path.
......
......@@ -6,3 +6,8 @@ werror-property
Target Property. If :prop_tgt:`COMPILE_WARNING_AS_ERROR` is true, it expands
to a different flag depending on the compiler such that any warnings at
compile will be treated as errors.
* :manual:`cmake(1)` gained the command-line option
``--compile-no-warning-as-error`` which causes the values of
the :prop_tgt:`COMPILE_WARNING_AS_ERROR` target property and
:variable:`CMAKE_COMPILE_WARNING_AS_ERROR` variable to be ignored.
......@@ -1026,11 +1026,13 @@ void cmLocalGenerator::AddCompileOptions(std::vector<BT<std::string>>& flags,
}
// Add Warning as errors flags
const cmValue wError = target->GetProperty("COMPILE_WARNING_AS_ERROR");
const cmValue wErrorFlag = this->Makefile->GetDefinition(
cmStrCat("CMAKE_", lang, "_COMPILE_OPTIONS_WARNING_AS_ERROR"));
if (wError.IsOn() && wErrorFlag.IsSet()) {
flags.emplace_back(wErrorFlag);
if (!this->GetCMakeInstance()->GetIgnoreWarningAsError()) {
const cmValue wError = target->GetProperty("COMPILE_WARNING_AS_ERROR");
const cmValue wErrorFlag = this->Makefile->GetDefinition(
cmStrCat("CMAKE_", lang, "_COMPILE_OPTIONS_WARNING_AS_ERROR"));
if (wError.IsOn() && wErrorFlag.IsSet()) {
flags.emplace_back(wErrorFlag);
}
}
// Add compile flag for the MSVC compiler only.
......
......@@ -1086,6 +1086,14 @@ void cmake::SetArgs(const std::vector<std::string>& args)
<< "uninitialized variables.\n";
state->SetCheckSystemVars(true);
return true;
} },
CommandArgument{
"--compile-no-warning-as-error", CommandArgument::Values::Zero,
[](std::string const&, cmake* state) -> bool {
std::cout << "Ignoring COMPILE_WARNING_AS_ERROR target property and "
<< "CMAKE_COMPILE_WARNING_AS_ERROR variable.\n";
state->SetIgnoreWarningAsError(true);
return true;
} }
};
......
......@@ -534,6 +534,8 @@ public:
void SetWarnUnusedCli(bool b) { this->WarnUnusedCli = b; }
bool GetCheckSystemVars() const { return this->CheckSystemVars; }
void SetCheckSystemVars(bool b) { this->CheckSystemVars = b; }
bool GetIgnoreWarningAsError() const { return this->IgnoreWarningAsError; }
void SetIgnoreWarningAsError(bool b) { this->IgnoreWarningAsError = b; }
void MarkCliAsUsed(const std::string& variable);
......@@ -686,6 +688,7 @@ private:
bool WarnUninitialized = false;
bool WarnUnusedCli = true;
bool CheckSystemVars = false;
bool IgnoreWarningAsError = false;
std::map<std::string, bool> UsedCliVariables;
std::string CMakeEditCommand;
std::string CXXEnvironment;
......
......@@ -111,6 +111,9 @@ const char* cmDocumentationOptions[][2] = {
{ "--check-system-vars",
"Find problems with variable usage in system "
"files." },
{ "--compile-no-warning-as-error",
"Ignore COMPILE_WARNING_AS_ERROR property and "
"CMAKE_COMPILE_WARNING_AS_ERROR variable." },
# if !defined(CMAKE_BOOTSTRAP)
{ "--profiling-format=<fmt>",
"Output data for profiling CMake scripts. Supported formats: "
......
......@@ -3,10 +3,11 @@ include(RunCMake)
function(run_compile_warn test)
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
set(RunCMake_TEST_OUTPUT_MERGE 1)
run_cmake(${test})
run_cmake_with_options(${test} ${ARGN})
set(RunCMake_TEST_NO_CLEAN 1)
run_cmake_command(${test}-Build ${CMAKE_COMMAND} --build . ${verbose_args})
endfunction()
run_compile_warn(WerrorOn)
run_compile_warn(WerrorOff)
run_compile_warn(WerrorOnIgnore "--compile-no-warning-as-error")
enable_language(CXX)
include(WarningAsErrorOptions.cmake)
get_warning_options(warning_options)
add_executable(WerrorOn warn.cxx)
target_compile_options(WerrorOn PUBLIC "${warning_options}")
set_target_properties(WerrorOn PROPERTIES COMPILE_WARNING_AS_ERROR ON)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment