mirror of
https://github.com/reactos/CMake.git
synced 2025-02-12 14:58:45 +00:00
cmMakefile: Enforce explicit use of project() command
Fixes: 17714
This commit is contained in:
parent
0f27e7d165
commit
1527defbfe
@ -112,12 +112,13 @@ Usage
|
||||
The top-level ``CMakeLists.txt`` file for a project must contain a
|
||||
literal, direct call to the :command:`project` command; loading one
|
||||
through the :command:`include` command is not sufficient. If no such
|
||||
call exists CMake will implicitly add one to the top that enables the
|
||||
default languages (``C`` and ``CXX``).
|
||||
call exists, CMake will issue a warning and pretend there is a
|
||||
``project(Project)`` at the top to enable the default languages
|
||||
(``C`` and ``CXX``).
|
||||
|
||||
.. note::
|
||||
Call the :command:`cmake_minimum_required` command at the beginning
|
||||
of the top-level ``CMakeLists.txt`` file even before calling the
|
||||
:command:`project()` command. It is important to establish version and
|
||||
policy settings before invoking other commands whose behavior they
|
||||
may affect. See also policy :policy:`CMP0000`.
|
||||
Call the :command:`project()` command near the top of the top-level
|
||||
``CMakeLists.txt``, but *after* calling :command:`cmake_minimum_required`.
|
||||
It is important to establish version and policy settings before invoking
|
||||
other commands whose behavior they may affect.
|
||||
See also policy :policy:`CMP0000`.
|
||||
|
@ -1599,6 +1599,16 @@ void cmMakefile::Configure()
|
||||
}
|
||||
// if no project command is found, add one
|
||||
if (!hasProject) {
|
||||
this->GetCMakeInstance()->IssueMessage(
|
||||
MessageType::AUTHOR_WARNING,
|
||||
"No project() command is present. The top-level CMakeLists.txt "
|
||||
"file must contain a literal, direct call to the project() command. "
|
||||
"Add a line of code such as\n"
|
||||
" project(ProjectName)\n"
|
||||
"near the top of the file, but after cmake_minimum_required().\n"
|
||||
"CMake is pretending there is a \"project(Project)\" command on "
|
||||
"the first line.",
|
||||
this->Backtrace);
|
||||
cmListFileFunction project;
|
||||
project.Name.Lower = "project";
|
||||
project.Arguments.emplace_back("Project", cmListFileArgument::Unquoted,
|
||||
|
12
Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt
Normal file
12
Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt
Normal file
@ -0,0 +1,12 @@
|
||||
^CMake Warning \(dev\) in CMakeLists.txt:
|
||||
No project\(\) command is present. The top-level CMakeLists.txt file must
|
||||
contain a literal, direct call to the project\(\) command. Add a line of
|
||||
code such as
|
||||
|
||||
project\(ProjectName\)
|
||||
|
||||
near the top of the file, but after cmake_minimum_required\(\).
|
||||
|
||||
CMake is pretending there is a "project\(Project\)" command on the first
|
||||
line.
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.$
|
Loading…
x
Reference in New Issue
Block a user