From c1ece78d113d39cdfb3c875d726e296c15abe4a8 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Tue, 27 Aug 2024 11:59:46 -0400 Subject: project: non cache prefix variables are also created Fixes #26243, #25714 --- Source/cmProjectCommand.cxx | 7 +++++++ Tests/RunCMake/project/ProjectCMP0126.cmake | 11 +++++++++++ Tests/RunCMake/project/RunCMakeTest.cmake | 1 + 3 files changed, 19 insertions(+) create mode 100644 Tests/RunCMake/project/ProjectCMP0126.cmake diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 53166c1..13070dd 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -59,9 +59,14 @@ bool cmProjectCommand(std::vector const& args, mf.AddCacheDefinition(projectName + "_BINARY_DIR", mf.GetCurrentBinaryDirectory(), "Value Computed by CMake", cmStateEnums::STATIC); + mf.AddDefinition(projectName + "_BINARY_DIR", + mf.GetCurrentBinaryDirectory()); + mf.AddCacheDefinition(projectName + "_SOURCE_DIR", mf.GetCurrentSourceDirectory(), "Value Computed by CMake", cmStateEnums::STATIC); + mf.AddDefinition(projectName + "_SOURCE_DIR", + mf.GetCurrentSourceDirectory()); mf.AddDefinition("PROJECT_BINARY_DIR", mf.GetCurrentBinaryDirectory()); mf.AddDefinition("PROJECT_SOURCE_DIR", mf.GetCurrentSourceDirectory()); @@ -72,6 +77,8 @@ bool cmProjectCommand(std::vector const& args, mf.AddCacheDefinition(projectName + "_IS_TOP_LEVEL", mf.IsRootMakefile() ? "ON" : "OFF", "Value Computed by CMake", cmStateEnums::STATIC); + mf.AddDefinition(projectName + "_IS_TOP_LEVEL", + mf.IsRootMakefile() ? "ON" : "OFF"); // Set the CMAKE_PROJECT_NAME variable to be the highest-level // project name in the tree. If there are two project commands diff --git a/Tests/RunCMake/project/ProjectCMP0126.cmake b/Tests/RunCMake/project/ProjectCMP0126.cmake new file mode 100644 index 0000000..65e3982 --- /dev/null +++ b/Tests/RunCMake/project/ProjectCMP0126.cmake @@ -0,0 +1,11 @@ +cmake_policy(SET CMP0126 NEW) +set(example_SOURCE_DIR "bad/path") +set(example_BINARY_DIR "bad/path") +project(example LANGUAGES) + +if(NOT "${example_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}") + message(FATAL_ERROR "example_SOURCE_DIR not set to expected value") +endif() +if(NOT "${example_BINARY_DIR}" STREQUAL "${PROJECT_BINARY_DIR}") + message(FATAL_ERROR "example_BINARY_DIR not set to expected value") +endif() diff --git a/Tests/RunCMake/project/RunCMakeTest.cmake b/Tests/RunCMake/project/RunCMakeTest.cmake index 16f10be..9c49281 100644 --- a/Tests/RunCMake/project/RunCMakeTest.cmake +++ b/Tests/RunCMake/project/RunCMakeTest.cmake @@ -33,6 +33,7 @@ run_cmake(LanguagesUnordered) if(RunCMake_GENERATOR MATCHES "Make|Ninja") run_cmake(LanguagesUsedButNotEnabled) endif() +run_cmake(ProjectCMP0126) run_cmake(ProjectDescription) run_cmake(ProjectDescription2) run_cmake(ProjectDescriptionNoArg) -- cgit v0.12