Skip to content
Snippets Groups Projects
Commit afeb4eb2 authored by James Johnston's avatar James Johnston
Browse files

nmake/jom: Only warn about bad VS environment if compiler not found.

nmake and jom generators no longer warn about missing INCLUDE/LIB
environment variables unless the C/CXX compiler cannot be found.  This
is useful if the user does not want to use these generators with the
Visual C++ compiler, or they do not want to enable any language.
parent 22590805
No related branches found
No related tags found
No related merge requests found
Showing
with 192 additions and 26 deletions
......@@ -374,6 +374,8 @@ protected:
void SetLanguageEnabledFlag(const std::string& l, cmMakefile* mf);
void SetLanguageEnabledMaps(const std::string& l, cmMakefile* mf);
void FillExtensionToLanguageMap(const std::string& l, cmMakefile* mf);
virtual void PrintCompilerAdvice(std::ostream& os, std::string const& lang,
const char* envVar) const;
virtual bool ComputeTargetDepends();
......@@ -462,8 +464,6 @@ private:
virtual void ForceLinkerLanguages();
virtual void PrintCompilerAdvice(std::ostream& os, std::string const& lang,
const char* envVar) const;
void CheckCompilerIdCompatibility(cmMakefile* mf,
std::string const& lang) const;
......
......@@ -36,18 +36,6 @@ void cmGlobalJOMMakefileGenerator
// pick a default
mf->AddDefinition("CMAKE_GENERATOR_CC", "cl");
mf->AddDefinition("CMAKE_GENERATOR_CXX", "cl");
if(!(cmSystemTools::GetEnv("INCLUDE") &&
cmSystemTools::GetEnv("LIB"))
)
{
std::string message = "To use the JOM generator, cmake must be run "
"from a shell that can use the compiler cl from the command line. "
"This environment does not contain INCLUDE, LIB, or LIBPATH, and "
"these must be set for the cl compiler to work. ";
mf->IssueMessage(cmake::WARNING,
message);
}
this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional);
}
......@@ -58,3 +46,19 @@ void cmGlobalJOMMakefileGenerator
entry.Name = cmGlobalJOMMakefileGenerator::GetActualName();
entry.Brief = "Generates JOM makefiles.";
}
//----------------------------------------------------------------------------
void cmGlobalJOMMakefileGenerator::PrintCompilerAdvice(std::ostream& os,
std::string const& lang,
const char* envVar) const
{
if(lang == "CXX" || lang == "C")
{
os <<
"To use the JOM generator with Visual C++, cmake must be run from a "
"shell that can use the compiler cl from the command line. This "
"environment is unable to invoke the cl compiler. To fix this problem, "
"run cmake from the Visual Studio Command Prompt (vcvarsall.bat).\n";
}
this->cmGlobalUnixMakefileGenerator3::PrintCompilerAdvice(os, lang, envVar);
}
......@@ -42,6 +42,9 @@ public:
*/
virtual void EnableLanguage(std::vector<std::string>const& languages,
cmMakefile *, bool optional);
private:
void PrintCompilerAdvice(std::ostream& os, std::string const& lang,
const char* envVar) const;
};
#endif
......@@ -36,18 +36,6 @@ void cmGlobalNMakeMakefileGenerator
// pick a default
mf->AddDefinition("CMAKE_GENERATOR_CC", "cl");
mf->AddDefinition("CMAKE_GENERATOR_CXX", "cl");
if(!(cmSystemTools::GetEnv("INCLUDE") &&
cmSystemTools::GetEnv("LIB"))
)
{
std::string message = "To use the NMake generator, cmake must be run "
"from a shell that can use the compiler cl from the command line. "
"This environment does not contain INCLUDE, LIB, or LIBPATH, and "
"these must be set for the cl compiler to work. ";
mf->IssueMessage(cmake::WARNING,
message);
}
this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional);
}
......@@ -58,3 +46,19 @@ void cmGlobalNMakeMakefileGenerator
entry.Name = cmGlobalNMakeMakefileGenerator::GetActualName();
entry.Brief = "Generates NMake makefiles.";
}
//----------------------------------------------------------------------------
void cmGlobalNMakeMakefileGenerator::PrintCompilerAdvice(std::ostream& os,
std::string const& lang,
const char* envVar) const
{
if(lang == "CXX" || lang == "C")
{
os <<
"To use the NMake generator with Visual C++, cmake must be run from a "
"shell that can use the compiler cl from the command line. This "
"environment is unable to invoke the cl compiler. To fix this problem, "
"run cmake from the Visual Studio Command Prompt (vcvarsall.bat).\n";
}
this->cmGlobalUnixMakefileGenerator3::PrintCompilerAdvice(os, lang, envVar);
}
......@@ -40,6 +40,9 @@ public:
*/
virtual void EnableLanguage(std::vector<std::string>const& languages,
cmMakefile *, bool optional);
private:
void PrintCompilerAdvice(std::ostream& os, std::string const& lang,
const char* envVar) const;
};
#endif
CMake Error at BadCompilerC.cmake:2 \(enable_language\):
The CMAKE_C_COMPILER:
no-C-compiler
is not a full path and was not found in the PATH.
To use the JOM generator with Visual C\+\+, cmake must be run from a shell
that can use the compiler cl from the command line. This environment is
unable to invoke the cl compiler. To fix this problem, run cmake from the
Visual Studio Command Prompt \(vcvarsall.bat\).
Tell CMake where to find the compiler by setting either the environment
variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
the compiler, or to the compiler name if it is in the PATH.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)$
CMake Error at BadCompilerC.cmake:2 \(enable_language\):
The CMAKE_C_COMPILER:
no-C-compiler
is not a full path and was not found in the PATH.
To use the NMake generator with Visual C\+\+, cmake must be run from a shell
that can use the compiler cl from the command line. This environment is
unable to invoke the cl compiler. To fix this problem, run cmake from the
Visual Studio Command Prompt \(vcvarsall.bat\).
Tell CMake where to find the compiler by setting either the environment
variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
the compiler, or to the compiler name if it is in the PATH.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)$
CMake Error at BadCompilerCXX.cmake:2 \(enable_language\):
The CMAKE_CXX_COMPILER:
no-CXX-compiler
is not a full path and was not found in the PATH.
To use the JOM generator with Visual C\+\+, cmake must be run from a shell
that can use the compiler cl from the command line. This environment is
unable to invoke the cl compiler. To fix this problem, run cmake from the
Visual Studio Command Prompt \(vcvarsall.bat\).
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)$
CMake Error at BadCompilerCXX.cmake:2 \(enable_language\):
The CMAKE_CXX_COMPILER:
no-CXX-compiler
is not a full path and was not found in the PATH.
To use the NMake generator with Visual C\+\+, cmake must be run from a shell
that can use the compiler cl from the command line. This environment is
unable to invoke the cl compiler. To fix this problem, run cmake from the
Visual Studio Command Prompt \(vcvarsall.bat\).
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)$
CMake Error at BadCompilerCandCXX.cmake:3 \(project\):
The CMAKE_C_COMPILER:
no-C-compiler
is not a full path and was not found in the PATH.
To use the JOM generator with Visual C\+\+, cmake must be run from a shell
that can use the compiler cl from the command line. This environment is
unable to invoke the cl compiler. To fix this problem, run cmake from the
Visual Studio Command Prompt \(vcvarsall.bat\).
Tell CMake where to find the compiler by setting either the environment
variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
the compiler, or to the compiler name if it is in the PATH.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
+
CMake Error at BadCompilerCandCXX.cmake:3 \(project\):
The CMAKE_CXX_COMPILER:
no-CXX-compiler
is not a full path and was not found in the PATH.
To use the JOM generator with Visual C\+\+, cmake must be run from a shell
that can use the compiler cl from the command line. This environment is
unable to invoke the cl compiler. To fix this problem, run cmake from the
Visual Studio Command Prompt \(vcvarsall.bat\).
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)$
CMake Error at BadCompilerCandCXX.cmake:3 \(project\):
The CMAKE_C_COMPILER:
no-C-compiler
is not a full path and was not found in the PATH.
To use the NMake generator with Visual C\+\+, cmake must be run from a shell
that can use the compiler cl from the command line. This environment is
unable to invoke the cl compiler. To fix this problem, run cmake from the
Visual Studio Command Prompt \(vcvarsall.bat\).
Tell CMake where to find the compiler by setting either the environment
variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
the compiler, or to the compiler name if it is in the PATH.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
+
CMake Error at BadCompilerCandCXX.cmake:3 \(project\):
The CMAKE_CXX_COMPILER:
no-CXX-compiler
is not a full path and was not found in the PATH.
To use the NMake generator with Visual C\+\+, cmake must be run from a shell
that can use the compiler cl from the command line. This environment is
unable to invoke the cl compiler. To fix this problem, run cmake from the
Visual Studio Command Prompt \(vcvarsall.bat\).
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)$
......@@ -4,6 +4,20 @@ if("${RunCMake_GENERATOR}" MATCHES "Visual Studio|Xcode")
run_cmake(NoCompilerC-IDE)
run_cmake(NoCompilerCXX-IDE)
run_cmake(NoCompilerCandCXX-IDE)
elseif(RunCMake_GENERATOR STREQUAL "NMake Makefiles")
set(RunCMake-stderr-file BadCompilerC-stderr-NMake.txt)
run_cmake(BadCompilerC)
set(RunCMake-stderr-file BadCompilerCXX-stderr-NMake.txt)
run_cmake(BadCompilerCXX)
set(RunCMake-stderr-file BadCompilerCandCXX-stderr-NMake.txt)
run_cmake(BadCompilerCandCXX)
elseif(RunCMake_GENERATOR STREQUAL "NMake Makefiles JOM")
set(RunCMake-stderr-file BadCompilerC-stderr-JOM.txt)
run_cmake(BadCompilerC)
set(RunCMake-stderr-file BadCompilerCXX-stderr-JOM.txt)
run_cmake(BadCompilerCXX)
set(RunCMake-stderr-file BadCompilerCandCXX-stderr-JOM.txt)
run_cmake(BadCompilerCandCXX)
else()
run_cmake(BadCompilerC)
run_cmake(BadCompilerCXX)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment