Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add separate cmake file for MSVC compile
Also fixes compile on MSVC using PCH Based on TrinityCore cmake implementation (based on cmangos/mangos-wotlk@e94f334) Signed-off-by: stfx <stfx@hotmail.de>
- Loading branch information
Showing
5 changed files
with
54 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
if(PLATFORM EQUAL X64) | ||
# This definition is necessary to work around a bug with Intellisense described | ||
# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper | ||
# debugger functionality. | ||
add_definitions("-D_WIN64") | ||
message(STATUS "MSVC: 64-bit platform, enforced -D_WIN64 parameter") | ||
|
||
#Enable extended object support for debug compiles on X64 (not required on X86) | ||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj") | ||
message(STATUS "MSVC: Enabled extended object-support for debug-compiles") | ||
else() | ||
# mark 32 bit executables large address aware so they can use > 2GB address space | ||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") | ||
message(STATUS "MSVC: Enabled large address awareness") | ||
|
||
add_definitions(/arch:SSE2) | ||
message(STATUS "MSVC: Enabled SSE2 support") | ||
endif() | ||
|
||
# multithreaded compiling on VS | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") | ||
|
||
# Define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES - eliminates the warning by changing the strcpy call to strcpy_s, which prevents buffer overruns | ||
add_definitions(-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES) | ||
message(STATUS "MSVC: Overloaded standard names") | ||
|
||
# Ignore warnings about older, less secure functions | ||
add_definitions(-D_CRT_SECURE_NO_WARNINGS) | ||
message(STATUS "MSVC: Disabled NON-SECURE warnings") | ||
|
||
# disable warnings in Visual Studio 8 and above if not wanted | ||
if(NOT WARNINGS) | ||
if(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7") | ||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996 /wd4355 /wd4244 /wd4985 /wd4267 /wd4619") | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996 /wd4355 /wd4244 /wd4985 /wd4267 /wd4619") | ||
message(STATUS "MSVC: Disabled generic compiletime warnings") | ||
endif() | ||
endif() | ||
|
||
# Specify the maximum PreCompiled Header memory allocation limit | ||
# Fixes a compiler-problem when using PCH - the /Ym flag is adjusted by the compiler in MSVC2012, hence we need to set an upper limit with /Zm to avoid discrepancies) | ||
# (And yes, this is a verified , unresolved bug with MSVC... *sigh*) | ||
string(REGEX REPLACE "/Zm[0-9]+ *" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zm500" CACHE STRING "" FORCE) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,14 @@ | ||
# check what platform we're on (64-bit or 32-bit), and create a simpler test than CMAKE_SIZEOF_VOID_P | ||
if(CMAKE_SIZEOF_VOID_P MATCHES 8) | ||
set(PLATFORM X64) | ||
# This definition is necessary to work around a bug with Intellisense described | ||
# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper | ||
# debugger functionality. | ||
if(WIN32) | ||
add_definitions("-D_WIN64") | ||
endif() | ||
message(STATUS "Detected 64-bit platform") | ||
else() | ||
set(PLATFORM X86) | ||
message(STATUS "Detected 32-bit platform") | ||
endif() | ||
|
||
if(UNIX) | ||
if(WIN32) | ||
include("${CMAKE_SOURCE_DIR}/cmake/platform/win/settings.cmake") | ||
elseif(UNIX) | ||
include("${CMAKE_SOURCE_DIR}/cmake/platform/unix/settings.cmake") | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
if ( MSVC ) | ||
include(${CMAKE_SOURCE_DIR}/cmake/compiler/msvc/settings.cmake) | ||
endif() |