mirror of
https://github.com/reactos/CMake.git
synced 2024-11-24 12:09:48 +00:00
Merge topic 'vs-rc-defines'
fff34934
MSVC: Restore _DEBUG preprocessor definition in RC debug builds79a91538
RC: Add missing CMAKE_RC_FLAGS_<CONFIG> entries to cachec77194ec
VS: Honor preprocessor definitions in RC flags1449f6f6
cmVisualStudio10TargetGenerator: De-duplicate preprocessor defs8a619e8c
cmIDEOptions: Add GetDefines method Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !640
This commit is contained in:
commit
6dc7262bf7
@ -17,11 +17,26 @@ set(CMAKE_SYSTEM_AND_RC_COMPILER_INFO_FILE
|
||||
${CMAKE_ROOT}/Modules/Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}.cmake)
|
||||
include(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL)
|
||||
|
||||
string(STRIP "$ENV{RCFLAGS} ${CMAKE_RC_FLAGS_INIT}" CMAKE_RC_FLAGS_INIT)
|
||||
set(CMAKE_RC_FLAGS_INIT "$ENV{RCFLAGS} ${CMAKE_RC_FLAGS_INIT}")
|
||||
|
||||
foreach(c "" _DEBUG _RELEASE _MINSIZEREL _RELWITHDEBINFO)
|
||||
string(STRIP "${CMAKE_RC_FLAGS${c}_INIT}" CMAKE_RC_FLAGS${c}_INIT)
|
||||
endforeach()
|
||||
|
||||
set (CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS_INIT}" CACHE STRING
|
||||
"Flags for Windows Resource Compiler.")
|
||||
|
||||
if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
|
||||
set (CMAKE_RC_FLAGS_DEBUG "${CMAKE_RC_FLAGS_DEBUG_INIT}" CACHE STRING
|
||||
"Flags for Windows Resource Compiler during debug builds.")
|
||||
set (CMAKE_RC_FLAGS_MINSIZEREL "${CMAKE_RC_FLAGS_MINSIZEREL_INIT}" CACHE STRING
|
||||
"Flags for Windows Resource Compiler during release builds for minimum size.")
|
||||
set (CMAKE_RC_FLAGS_RELEASE "${CMAKE_RC_FLAGS_RELEASE_INIT}" CACHE STRING
|
||||
"Flags for Windows Resource Compiler during release builds.")
|
||||
set (CMAKE_RC_FLAGS_RELWITHDEBINFO "${CMAKE_RC_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
|
||||
"Flags for Windows Resource Compiler during release builds with debug info.")
|
||||
endif()
|
||||
|
||||
# These are the only types of flags that should be passed to the rc
|
||||
# command, if COMPILE_FLAGS is used on a target this will be used
|
||||
# to filter out any other flags
|
||||
|
@ -310,6 +310,9 @@ macro(__windows_compiler_msvc lang)
|
||||
if(NOT CMAKE_RC_FLAGS_INIT)
|
||||
string(APPEND CMAKE_RC_FLAGS_INIT " ${_PLATFORM_DEFINES} ${_PLATFORM_DEFINES_${lang}}")
|
||||
endif()
|
||||
if(NOT CMAKE_RC_FLAGS_DEBUG_INIT)
|
||||
string(APPEND CMAKE_RC_FLAGS_DEBUG_INIT " /D_DEBUG")
|
||||
endif()
|
||||
|
||||
enable_language(RC)
|
||||
set(CMAKE_NINJA_CMCLDEPS_RC 1)
|
||||
|
@ -150,6 +150,11 @@ void cmIDEOptions::AddDefines(const std::vector<std::string>& defines)
|
||||
this->Defines.insert(this->Defines.end(), defines.begin(), defines.end());
|
||||
}
|
||||
|
||||
std::vector<std::string> const& cmIDEOptions::GetDefines() const
|
||||
{
|
||||
return this->Defines;
|
||||
}
|
||||
|
||||
void cmIDEOptions::AddFlag(const char* flag, const char* value)
|
||||
{
|
||||
this->FlagMap[flag] = value;
|
||||
|
@ -24,6 +24,8 @@ public:
|
||||
void AddDefine(const std::string& define);
|
||||
void AddDefines(const char* defines);
|
||||
void AddDefines(const std::vector<std::string>& defines);
|
||||
std::vector<std::string> const& GetDefines() const;
|
||||
|
||||
void AddFlag(const char* flag, const char* value);
|
||||
void AddFlag(const char* flag, std::vector<std::string> const& value);
|
||||
void AppendFlag(std::string const& flag, std::string const& value);
|
||||
|
@ -2402,6 +2402,11 @@ bool cmVisualStudio10TargetGenerator::ComputeRcOptions(
|
||||
std::string(this->Makefile->GetSafeDefinition(rcConfigFlagsVar));
|
||||
|
||||
rcOptions.Parse(flags.c_str());
|
||||
|
||||
// For historical reasons, add the C preprocessor defines to RC.
|
||||
Options& clOptions = *(this->ClOptions[configName]);
|
||||
rcOptions.AddDefines(clOptions.GetDefines());
|
||||
|
||||
this->RcOptions[configName] = pOptions.release();
|
||||
return true;
|
||||
}
|
||||
@ -2414,12 +2419,9 @@ void cmVisualStudio10TargetGenerator::WriteRCOptions(
|
||||
}
|
||||
this->WriteString("<ResourceCompile>\n", 2);
|
||||
|
||||
// Preprocessor definitions and includes are shared with clOptions.
|
||||
Options& clOptions = *(this->ClOptions[configName]);
|
||||
clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
||||
"\n", "RC");
|
||||
|
||||
Options& rcOptions = *(this->RcOptions[configName]);
|
||||
rcOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
||||
"\n", "RC");
|
||||
rcOptions.AppendFlag("AdditionalIncludeDirectories", includes);
|
||||
rcOptions.AppendFlag("AdditionalIncludeDirectories",
|
||||
"%(AdditionalIncludeDirectories)");
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "cmVisualStudioGeneratorOptions.h"
|
||||
|
||||
#include "cmAlgorithms.h"
|
||||
#include "cmLocalVisualStudioGenerator.h"
|
||||
#include "cmOutputConverter.h"
|
||||
#include "cmSystemTools.h"
|
||||
@ -403,8 +404,10 @@ void cmVisualStudioGeneratorOptions::OutputPreprocessorDefinitions(
|
||||
fout << prefix << tag << "=\"";
|
||||
}
|
||||
const char* sep = "";
|
||||
std::vector<std::string>::const_iterator de =
|
||||
cmRemoveDuplicates(this->Defines);
|
||||
for (std::vector<std::string>::const_iterator di = this->Defines.begin();
|
||||
di != this->Defines.end(); ++di) {
|
||||
di != de; ++di) {
|
||||
// Escape the definition for the compiler.
|
||||
std::string define;
|
||||
if (this->Version < cmGlobalVisualStudioGenerator::VS10) {
|
||||
|
Loading…
Reference in New Issue
Block a user