Skip to content

Commit c776639

Browse files
committed
Simplify flag specification with MVSC
Addresses many linking errors for the `castxml` binary.
1 parent 6e0b3fc commit c776639

File tree

1 file changed

+3
-27
lines changed

1 file changed

+3
-27
lines changed

CMakeLists.txt

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,6 @@ enable_language(C)
1212
enable_language(CXX)
1313

1414

15-
# Use a static runtime with MSVC
16-
if(MSVC)
17-
foreach(flag
18-
CMAKE_CXX_FLAGS
19-
CMAKE_CXX_FLAGS_RELEASE
20-
CMAKE_C_FLAGS
21-
CMAKE_C_FLAGS_RELEASE
22-
)
23-
if(${flag} MATCHES "/MD")
24-
string(REGEX REPLACE "/MD" "/MT" ${flag} "${${flag}}")
25-
endif()
26-
endforeach()
27-
endif()
2815
set(CMAKE_CXX_STANDARD "17")
2916

3017

@@ -81,14 +68,10 @@ else()
8168
CMAKE_GENERATOR "${CMAKE_GENERATOR}"
8269
CMAKE_CACHE_ARGS
8370
-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
84-
"-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} -w"
85-
"-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}"
8671
-DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}
8772
-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
88-
"-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -w"
89-
"-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
73+
-DLLVM_STATIC_LINK_CXX_STDLIB:BOOL=ON
9074
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
91-
-DLLVM_USE_CRT_RELEASE:STRING=MT
9275
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
9376
-DLLVM_INSTALL_PREFIX:PATH=<INSTALL_DIR>
9477
-DLLVM_ENABLE_TERMINFO:BOOL=OFF
@@ -114,12 +97,8 @@ else()
11497
CMAKE_GENERATOR "${CMAKE_GENERATOR}"
11598
CMAKE_CACHE_ARGS
11699
-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
117-
"-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} -w"
118-
"-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}"
119100
-DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}
120101
-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
121-
"-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -w"
122-
"-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
123102
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
124103
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
125104
-DCLANG_INCLUDE_DOCS:BOOL=OFF
@@ -141,7 +120,7 @@ endif()
141120

142121
# Use a static C++ library on GCC/Linux
143122
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_NAME MATCHES "Linux")
144-
set(extra_flags "-static-libstdc++")
123+
set(linux_args "-DCMAKE_CXX_FLAGS:STRING=-static-libstdc++")
145124
endif()
146125
# 2024-04-12 master
147126
set(CastXML_GIT_TAG v0.6.5 CACHE STRING "CastXML Git revision.")
@@ -153,16 +132,13 @@ ExternalProject_Add(castxml
153132
CMAKE_GENERATOR "${CMAKE_GENERATOR}"
154133
CMAKE_CACHE_ARGS
155134
-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
156-
"-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} -w ${extra_flags}"
157-
"-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}"
158135
-DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}
159136
-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
160-
"-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -w"
161-
"-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
162137
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
163138
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
164139
-DLLVM_DIR:PATH=${LLVM_DIR}
165140
${osx_args}
141+
${linux_args}
166142
${verbose_command}
167143
LOG_BUILD 0
168144
INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/castxml

0 commit comments

Comments
 (0)