target_compile_options(${THETARGET}\r
PUBLIC\r
/EHa # Enable both SEH and C++ Exceptions.\r
+ /GF # There are bugs with constexpr StringPiece when string pooling is disabled.\r
/Zc:referenceBinding # Disallow temporaries from binding to non-const lvalue references.\r
/Zc:rvalueCast # Enforce the standard rules for explicit type conversion.\r
/Zc:implicitNoexcept # Enable implicit noexcept specifications where required, such as destructors.\r
# Debug builds\r
$<$<CONFIG:DEBUG>:\r
/Gy- # Disable function level linking.\r
- /GF- # Disable string pooling.\r
\r
$<$<BOOL:${MSVC_ENABLE_DEBUG_INLINING}>:/Ob2> # Add /Ob2 if allowing inlining in debug mode.\r
>\r
\r
# Non-debug builds\r
$<$<NOT:$<CONFIG:DEBUG>>:\r
- /GF # Enable string pooling. (this is enabled by default by the optimization level, but we enable it here for clarity)\r
/Gw # Optimize global data. (-fdata-sections)\r
/Gy # Enable function level linking. (-ffunction-sections)\r
/Qpar # Enable parallel code generation.\r