mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
Merge topic 'top-level-command-order'
59573bf5b9project: Warn at top-level if `cmake_minimum_required` wasn't called23f3dd9f7cRunCMake/project: Ignore exact line number in stderr checks Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !7902
This commit is contained in:
@@ -188,5 +188,6 @@ call exists, CMake will issue a warning and pretend there is a
|
||||
Call the ``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.
|
||||
other commands whose behavior they may affect and for this reason the
|
||||
``project()`` command will issue a warning if this order is not kept.
|
||||
See also policy :policy:`CMP0000`.
|
||||
|
||||
6
Help/release/dev/top-level-command-order.rst
Normal file
6
Help/release/dev/top-level-command-order.rst
Normal file
@@ -0,0 +1,6 @@
|
||||
top-level-command-order
|
||||
-----------------------
|
||||
|
||||
* The top-level :command:`project` call will now emit an author warning if the
|
||||
documented command order in relation to :command:`cmake_minimum_required` is
|
||||
not respected.
|
||||
@@ -34,6 +34,15 @@ bool cmProjectCommand(std::vector<std::string> const& args,
|
||||
}
|
||||
|
||||
cmMakefile& mf = status.GetMakefile();
|
||||
if (mf.IsRootMakefile() &&
|
||||
!mf.GetDefinition("CMAKE_MINIMUM_REQUIRED_VERSION")) {
|
||||
mf.IssueMessage(
|
||||
MessageType::AUTHOR_WARNING,
|
||||
"cmake_minimum_required() should be called prior to this top-level "
|
||||
"project() call. Please see the cmake-commands(7) manual for usage "
|
||||
"documentation of both commands.");
|
||||
}
|
||||
|
||||
if (!IncludeByVariable(status, "CMAKE_PROJECT_INCLUDE_BEFORE")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
set(CMAKE_MINIMUM_REQUIRED_VERSION "" CACHE STRING "")
|
||||
|
||||
# Used to verify that the values match what is passed via -S and -B, and are retained in cache.
|
||||
set(INITIAL_SOURCE_DIR "${CMAKE_SOURCE_DIR}" CACHE PATH "defined in initial.cmake")
|
||||
set(INITIAL_BINARY_DIR "${CMAKE_BINARY_DIR}" CACHE PATH "defined in initial.cmake")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
CMake Error at CMP0048-OLD-VERSION.cmake:1 \(project\):
|
||||
VERSION not allowed unless CMP0048 is set to NEW
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
||||
CMakeLists.txt:[0-9]+ \(include\)$
|
||||
|
||||
@@ -7,4 +7,4 @@
|
||||
specific short-term circumstances. Projects should be ported to the NEW
|
||||
behavior and not rely on setting a policy to OLD.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
||||
CMakeLists.txt:[0-9]+ \(include\)$
|
||||
|
||||
@@ -8,5 +8,5 @@ CMake Warning \(dev\) at CMP0048-WARN.cmake:3 \(project\):
|
||||
PROJECT_VERSION
|
||||
MyProject_VERSION_TWEAK
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
CMakeLists.txt:[0-9]+ \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
if(NOT "x${RunCMake_TEST}" STREQUAL "xNoMinimumRequired")
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
endif()
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
CMake Error at LanguagesTwice.cmake:1 \(project\):
|
||||
LANGUAGES may be specified at most once.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
||||
CMakeLists.txt:[0-9]+ \(include\)$
|
||||
|
||||
5
Tests/RunCMake/project/NoMinimumRequired-stderr.txt
Normal file
5
Tests/RunCMake/project/NoMinimumRequired-stderr.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
CMake Warning \(dev\) at CMakeLists\.txt:[0-9]+ \(project\):
|
||||
cmake_minimum_required\(\) should be called prior to this top-level project\(\)
|
||||
call\. Please see the cmake-commands\(7\) manual for usage documentation of
|
||||
both commands\.
|
||||
This warning is for project developers\. Use -Wno-dev to suppress it\.$
|
||||
0
Tests/RunCMake/project/NoMinimumRequired.cmake
Normal file
0
Tests/RunCMake/project/NoMinimumRequired.cmake
Normal file
@@ -52,3 +52,5 @@ run_cmake(CMP0048-NEW)
|
||||
run_cmake(CMP0096-WARN)
|
||||
run_cmake(CMP0096-OLD)
|
||||
run_cmake(CMP0096-NEW)
|
||||
|
||||
run_cmake(NoMinimumRequired)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
CMake Error at VersionInvalid.cmake:2 \(project\):
|
||||
VERSION "NONE" format invalid.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
||||
CMakeLists.txt:[0-9]+ \(include\)$
|
||||
|
||||
@@ -2,4 +2,4 @@ CMake Error at VersionMissingLanguages.cmake:2 \(project\):
|
||||
project with VERSION, DESCRIPTION or HOMEPAGE_URL must use LANGUAGES before
|
||||
language names.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
||||
CMakeLists.txt:[0-9]+ \(include\)$
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
CMake Error at VersionTwice.cmake:2 \(project\):
|
||||
VERSION may be specified at most once.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
||||
CMakeLists.txt:[0-9]+ \(include\)$
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
include(RunCMake)
|
||||
|
||||
set(RunCMake_TEST_OPTIONS
|
||||
-DCMAKE_MINIMUM_REQUIRED_VERSION:STATIC=
|
||||
# Simulate a previous CMake run that used `project(... VERSION ...)`
|
||||
# in a non-injected call site.
|
||||
-DCMAKE_PROJECT_VERSION:STATIC=1.2.3
|
||||
|
||||
Reference in New Issue
Block a user