cmCoreTryCompile: Fix internal argument vector construction

In TryCompileCode we construct an internal argv[] vector that needs to
have a fake argv[0] so our internal cmake command line looks like a real
command line.  Fix construction of the fake argv[0] when try_compile is
called without the CMAKE_FLAGS argument.  Otherwise the first internal
-DVAR=val argument that we use to pass information like
CMAKE_OSX_SYSROOT is ignored.
This commit is contained in:
Brad King 2015-09-24 15:21:32 -04:00
parent cbfae8c3f2
commit 710bde43aa
1 changed files with 1 additions and 5 deletions

View File

@ -29,7 +29,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
const char* sourceDirectory = argv[2].c_str(); const char* sourceDirectory = argv[2].c_str();
const char* projectName = 0; const char* projectName = 0;
std::string targetName; std::string targetName;
std::vector<std::string> cmakeFlags; std::vector<std::string> cmakeFlags(1, "CMAKE_FLAGS"); // fake argv[0]
std::vector<std::string> compileDefs; std::vector<std::string> compileDefs;
std::string outputVariable; std::string outputVariable;
std::string copyFile; std::string copyFile;
@ -53,10 +53,6 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
if(argv[i] == "CMAKE_FLAGS") if(argv[i] == "CMAKE_FLAGS")
{ {
doing = DoingCMakeFlags; doing = DoingCMakeFlags;
// CMAKE_FLAGS is the first argument because we need an argv[0] that
// is not used, so it matches regular command line parsing which has
// the program name as arg 0
cmakeFlags.push_back(argv[i]);
} }
else if(argv[i] == "COMPILE_DEFINITIONS") else if(argv[i] == "COMPILE_DEFINITIONS")
{ {