Merge topic 'fix-ninja-rc-include-flags'
f4c5eade
Ninja: Fix RC include directories regression
This commit is contained in:
commit
cea13d5536
|
@ -1287,9 +1287,11 @@ cmLocalGenerator::ConvertToOutputForExisting(RelativeRoot remote,
|
|||
//----------------------------------------------------------------------------
|
||||
std::string
|
||||
cmLocalGenerator::ConvertToIncludeReference(std::string const& path,
|
||||
OutputFormat format)
|
||||
OutputFormat format,
|
||||
bool forceFullPaths)
|
||||
{
|
||||
return this->ConvertToOutputForExisting(path, START_OUTPUT, format);
|
||||
return this->ConvertToOutputForExisting(
|
||||
path, forceFullPaths? FULL : START_OUTPUT, format);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
@ -1297,6 +1299,7 @@ std::string cmLocalGenerator::GetIncludeFlags(
|
|||
const std::vector<std::string> &includes,
|
||||
cmGeneratorTarget* target,
|
||||
const std::string& lang,
|
||||
bool forceFullPaths,
|
||||
bool forResponseFile,
|
||||
const std::string& config)
|
||||
{
|
||||
|
@ -1401,7 +1404,7 @@ std::string cmLocalGenerator::GetIncludeFlags(
|
|||
flagUsed = true;
|
||||
}
|
||||
std::string includePath =
|
||||
this->ConvertToIncludeReference(*i, shellFormat);
|
||||
this->ConvertToIncludeReference(*i, shellFormat, forceFullPaths);
|
||||
if(quotePaths && includePath.size() && includePath[0] != '\"')
|
||||
{
|
||||
includeFlags << "\"";
|
||||
|
|
|
@ -160,6 +160,7 @@ public:
|
|||
std::string GetIncludeFlags(const std::vector<std::string> &includes,
|
||||
cmGeneratorTarget* target,
|
||||
const std::string& lang,
|
||||
bool forceFullPaths = false,
|
||||
bool forResponseFile = false,
|
||||
const std::string& config = "");
|
||||
|
||||
|
@ -215,7 +216,8 @@ public:
|
|||
OutputFormat format = SHELL);
|
||||
|
||||
virtual std::string ConvertToIncludeReference(std::string const& path,
|
||||
OutputFormat format = SHELL);
|
||||
OutputFormat format = SHELL,
|
||||
bool forceFullPaths = false);
|
||||
|
||||
/** Called from command-line hook to clear dependencies. */
|
||||
virtual void ClearDependencies(cmMakefile* /* mf */,
|
||||
|
|
|
@ -151,9 +151,10 @@ cmLocalNinjaGenerator::ConvertToLinkReference(std::string const& lib,
|
|||
|
||||
std::string
|
||||
cmLocalNinjaGenerator::ConvertToIncludeReference(std::string const& path,
|
||||
OutputFormat format)
|
||||
OutputFormat format,
|
||||
bool forceFullPaths)
|
||||
{
|
||||
return this->Convert(path, HOME_OUTPUT, format);
|
||||
return this->Convert(path, forceFullPaths? FULL : HOME_OUTPUT, format);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -108,7 +108,8 @@ public:
|
|||
|
||||
protected:
|
||||
virtual std::string ConvertToIncludeReference(std::string const& path,
|
||||
OutputFormat format = SHELL);
|
||||
OutputFormat format = SHELL,
|
||||
bool forceFullPaths = false);
|
||||
|
||||
|
||||
private:
|
||||
|
|
|
@ -1962,7 +1962,7 @@ void cmMakefileTargetGenerator::AddIncludeFlags(std::string& flags,
|
|||
|
||||
std::string includeFlags =
|
||||
this->LocalGenerator->GetIncludeFlags(includes, this->GeneratorTarget,
|
||||
lang, useResponseFile);
|
||||
lang, false, useResponseFile);
|
||||
if(includeFlags.empty())
|
||||
{
|
||||
return;
|
||||
|
|
|
@ -18,6 +18,11 @@ if(CMAKE_RC_COMPILER MATCHES windres)
|
|||
message(STATUS "CMAKE_RC_COMPILER MATCHES windres")
|
||||
add_definitions(/DCMAKE_RCDEFINE=test.txt)
|
||||
add_definitions(/DCMAKE_RCDEFINE_NO_QUOTED_STRINGS)
|
||||
if(MSYS AND CMAKE_CURRENT_BINARY_DIR MATCHES " ")
|
||||
# windres cannot handle spaces in include dir, and
|
||||
# for the MSys shell we do not convert to shortpath.
|
||||
set(CMAKE_RC_NO_INCLUDE 1)
|
||||
endif()
|
||||
elseif(MSVC60)
|
||||
# VS6 rc compiler does not deal well with spaces in a "/D" value, but it can
|
||||
# handle the quoting
|
||||
|
@ -30,10 +35,17 @@ else()
|
|||
set(TEXTFILE_FROM_SOURCE_DIR "textfile, spaces in name, from binary dir")
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test.txt
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/test with spaces.txt" @ONLY)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_definitions(/DCMAKE_RCDEFINE="test with spaces.txt")
|
||||
endif()
|
||||
|
||||
if(CMAKE_RC_NO_INCLUDE)
|
||||
add_definitions(/DCMAKE_RC_NO_INCLUDE)
|
||||
else()
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include.rc.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/include.rc" @ONLY)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
|
||||
add_executable(VSResource main.cpp test.rc)
|
||||
|
||||
set_property(TARGET VSResource
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
// This file should be included.
|
|
@ -1,4 +1,7 @@
|
|||
#ifdef CMAKE_RCDEFINE
|
||||
# ifndef CMAKE_RC_NO_INCLUDE
|
||||
# include <include.rc>
|
||||
# endif
|
||||
|
||||
// This line can compile with either an unquoted or a quoted string
|
||||
1025 TEXTFILE CMAKE_RCDEFINE
|
||||
|
|
Loading…
Reference in New Issue