我正在尝试使用Visual Studio 2017和基于CMake的项目(以及默认的Ninja后端)构建静态库(特别是Protobuf)。
我想在构建时传递/Z7
编译器开关(或更准确地说,将默认/Zi
替换为/Z7
),以便最终将调试信息嵌入{{ 1}}文件,而不是创建单独的.lib
文件。
我对CMake完全一无所知(但是我确实有一个可行的版本)。我该怎么做?
最好,如果可能的话,只使用对VS创建的.pdb
文件的更改,而不对上游CMakeSettings.json
文件进行任何更改。
如果这不可能,那么采用某种方法来制作一个新的CMakeLists.txt
文件,该文件会继承未修改的上游文件中的所有内容,但会覆盖此设置。
我当前的CMakeLists.txt
文件同时指定了CMakeSettings.json
和Debug
的配置。
答案 0 :(得分:1)
经过一番尝试(并受到this question的启发),这似乎是添加新CMakeLists.txt
文件的第二个(不太受欢迎的)解决方案:
cmake_minimum_required(VERSION 3.1.3)
project(protobuf C CXX)
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
add_subdirectory(../cmake cmake)
如果有人有,我仍然对更清洁的解决方案感兴趣。