From 1531df2b866df9aa52dc54219a4552e94f47b622 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 31 Oct 2014 13:07:21 -0400 Subject: configure_file: Warn about unknown arguments Extend the RunCMake.configure_file test with a case covering possible common typos of the COPYONLY option. Reported-by: Iosif Neitzke --- Source/cmConfigureFileCommand.cxx | 13 +++++++++++++ Tests/RunCMake/configure_file/RunCMakeTest.cmake | 1 + Tests/RunCMake/configure_file/UnknownArg-stderr.txt | 10 ++++++++++ Tests/RunCMake/configure_file/UnknownArg.cmake | 2 ++ 4 files changed, 26 insertions(+) create mode 100644 Tests/RunCMake/configure_file/UnknownArg-stderr.txt create mode 100644 Tests/RunCMake/configure_file/UnknownArg.cmake diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx index 395e6c8..cb727a8 100644 --- a/Source/cmConfigureFileCommand.cxx +++ b/Source/cmConfigureFileCommand.cxx @@ -74,6 +74,7 @@ bool cmConfigureFileCommand this->CopyOnly = false; this->EscapeQuotes = false; + std::string unknown_args; this->AtOnly = false; for(unsigned int i=2;i < args.size();++i) { @@ -99,6 +100,18 @@ bool cmConfigureFileCommand { /* Ignore legacy option. */ } + else + { + unknown_args += " "; + unknown_args += args[i]; + unknown_args += "\n"; + } + } + if (!unknown_args.empty()) + { + std::string msg = "configure_file called with unknown argument(s):\n"; + msg += unknown_args; + this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, msg); } if ( !this->ConfigureFile() ) diff --git a/Tests/RunCMake/configure_file/RunCMakeTest.cmake b/Tests/RunCMake/configure_file/RunCMakeTest.cmake index c8bfa57..c010256 100644 --- a/Tests/RunCMake/configure_file/RunCMakeTest.cmake +++ b/Tests/RunCMake/configure_file/RunCMakeTest.cmake @@ -6,3 +6,4 @@ run_cmake(UTF16LE-BOM) run_cmake(UTF16BE-BOM) run_cmake(UTF32LE-BOM) run_cmake(UTF32BE-BOM) +run_cmake(UnknownArg) diff --git a/Tests/RunCMake/configure_file/UnknownArg-stderr.txt b/Tests/RunCMake/configure_file/UnknownArg-stderr.txt new file mode 100644 index 0000000..46930c0 --- /dev/null +++ b/Tests/RunCMake/configure_file/UnknownArg-stderr.txt @@ -0,0 +1,10 @@ +CMake Warning \(dev\) at UnknownArg.cmake:1 \(configure_file\): + configure_file called with unknown argument\(s\): + + COPY_ONLY + COPYFILE + COPY_FILE + +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) +This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/configure_file/UnknownArg.cmake b/Tests/RunCMake/configure_file/UnknownArg.cmake new file mode 100644 index 0000000..5125c83 --- /dev/null +++ b/Tests/RunCMake/configure_file/UnknownArg.cmake @@ -0,0 +1,2 @@ +configure_file(${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in UnknownArg.txt + @ONLY COPYONLY COPY_ONLY COPYFILE COPY_FILE) -- cgit v0.12