c++ - CMake(Ninja 后端)使用 /MT 编译
问题描述
我有一个与使用 /MT 而不是 /MD 编译的 CMake类似的问题,但有一些区别:
我正在使用 Visual Studio 2017 使用 CMake 和 Ninja 生成器构建库。Visual Studio 为我提供了一些选择(配置),例如 x86-Debug 等。还有一个 CMakeSettings.json 文件,似乎我可以通过它操作 Visual Studio 的默认配置。但我不知道怎么做!
我想用 /MT 编译我的库,但我不想像上面的帖子那样在 CMakeLists.txt 文件中对其进行硬编码。这意味着我想通过配置根据用户选择来编译我的库。
CMakeSettings.json 文件中是否有任何变量可以帮助我定义 /MT 编译器开关?图书馆的静态/动态建设怎么样?有关于此文件的任何帮助吗?
解决方案
几周前我遇到了同样的问题,我使用 CMakeSettings.json 文件解决了这个问题。我解释了定义 MT 的解决方案和静态/动态的方法是相同的。
使用 CMakeSettings.json 中的 cmakeCommandArgs 变量将您想要的任何内容作为 cmake 参数发送。它可以是这样的:
"cmakeCommandArgs": "-DLINK_TYPE=Static"
然后在 CMakeLists.txt 中,您必须根据您定义的参数简单地决定。它可以采用以下形式:
if ("${LINK_TYPE}" STREQUAL "Static")
add_compile_options(/MT$<$<CONFIG:Debug>:d>)
endif()
推荐阅读
- google-cloud-dataflow - 带有触发器用例的数据流滑动窗口与全局窗口?
- entity-framework - 使用通用类进行继承和成员(代码优先)
- python - 无法创建数据透视表,关键错误:“类”
- google-app-engine - 如何从 CloudFunctions 停止 Google App Engine(GAE)
- jenkins - 如何在构建后操作中优先运行 JOB NOTIFICATION 插件
- swift - 从 Xcode 中的另一个视图控制器文件中删除 UITableVIewCell
- javascript - 将 array.sort() 默认算法应用于数组中对象的字符串属性
- javascript - 单击按钮时如何更改插入符号?
- postgresql - 对于每个列表姓氏和他们监督的人,包括必须列出所有员工(即使是那些不监督任何人的人)
- java - Azure Functions - 如何使用默认“run()”方法中的“MultipartHttpServletRequest”类?