我正在尝试使用IUP在Windows 10中创建gui程序。我也正在使用Clion + MSVC作为IDE。 IUP有.lib和.dll文件可供下载,当我不指定如何在cmake中链接时,一切都进行得很好。没有关于链接的自定义标志时,cmake会自动尝试与iup.dll动态链接。
但是,当我尝试将iup.dll与编译器标志/MT
静态链接时,编译器会自动将/MT
更改为/MD
并只是动态链接。
这是我用来强制编译器静态链接的cmake代码:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MT")
然后我收到此警告:
cl : Command line warning D9025 : overriding '/MT' with '/MD'
有什么方法可以“强制” cmake和编译器将库静态链接到我的程序?
答案 0 :(得分:0)
答案 1 :(得分:0)
By default CMake uses the MSVC dynamic runtime library (/MD
) when building static or shared libraries.
You need to replace the /MD
setting in the CMAKE_C_FLAGS
/CMAKE_CXX_FLAGS
variables with /MT
.
This can be done by the follwoing commands:
string(REGEX REPLACE "/MD" "/MT" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
string(REGEX REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
For a complete solution please see the following post
答案 2 :(得分:0)
另一个选项:
binrg1