visual-c++ - MSVC 不通过 cmake 生成 lib
问题描述
CMakeLists:
if (MSVC)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()
add_library(${PROJECT_NAME} SHARED ${SOURCES})
CMake 2.8.12 + MSVC 2015
配置输出:
-- The C compiler identification is MSVC 19.0.24210.0
-- The CXX compiler identification is MSVC 19.0.24210.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMAKE_C_FLAGS_DEBUG is /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
CMAKE_C_FLAGS_RELEASE is /MD /O2 /Ob2 /D NDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO is /MD /Zi /O2 /Ob1 /D NDEBUG
CMAKE_C_FLAGS_MINSIZEREL is /MD /O1 /Ob1 /D NDEBUG
-- Configuring done
-- Generating done
参考https://cmake.org/pipermail/cmake/2009-March/027990.html。
您很可能尚未设置要导出的类和/或函数调用。如果您没有导出的类/函数,Visual Studio 不会为您生成导入库。
但是添加CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON
得到了相同的结果。
如何让 MSVC 像 mingw 一样生成 lib & dll?
解决方案
将 2.8更新cmake
到 3.4 解决了这个问题。
https://cmake.org/cmake/help/v3.4/release/3.4.html?highlight=windows_export_all_symbols
推荐阅读
- tcl - 为什么在构建 TCL 源时忽略头文件更改?
- r - 使用每月数据为特定小时范围内的所有行分配值
- go - Logrus:如何打印控制台日志
- python - 为什么 selenium 不能从我的 xpath 中找到这个看似简单的元素?
- ruby-on-rails - 如何使用 where 方法在数组 rails 中查找所有内容 id
- python - 如何分发调用 Python 的 C++ 应用程序?
- python - 如何理解 Python 的模块查找
- flutter - SharedPreferences 提交方法显示在颤振中已弃用
- python - 转置 pandas 中的列并重复每行的值(列次数)
- netsuite - record.transform Transfer Order to Item Receipt 抛出错误