CMake Project in Visual Studio 2019

小结

在Visual Studio 2019里使用CMake的工程碰到一些问题:
找不到Boost库
找不到OpenSSL库
进行了解决,并测试成功。

问题和解决

在Visual Studio 2019里使用CMake的工程可以参考微软的官方文档:
CMake projects in Visual Studio

找不到Boost库

比较觉的问题是找不到Boost的库文件,例如找不到libboost_regex-vc142-mt-gd-x64-1_70.lib,大体上有以下一些解决办法:

编辑CmakeLists.txt文件
编辑CmakeLists.txt文件加入路径,例如:

SET(BOOST_LIBRARYDIR "C:/boost_1_70_0/stage/lib")
SET(BOOST_LIBRARY_DIR "C:/boost_1_70_0/stage/lib")
SET(BOOST_INCLUDEDIR "C:/boost_1_70_0")
SET(BOOST_INCLUDE_DIR "C:/boost_1_70_0")
set(BOOST_ROOT "C:/boost_1_70_0")
SET(BOOST_lib "C:/boost_1_70_0/stage/lib")

以下设置可以解决很多问题:

add_definitions( -DBOOST_ALL_NO_LIB )
add_definitions( -DBOOST_SYSTEM_NO_DEPRECATED )
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME    OFF)
set(Boost_DEBUG      ON)

设置Visual Studio 2019

在Visual Studio 2019中Project --> CMake Settings for 'Your Porject Name'可以进行各种Cmake Settings

Cmake command arguments加入:
-DBoost_DEBUG=ON -DBOOST_INCLUDEDIR="C:/boost_1_70_0/libs" -DBOOST_LIBRARYDIR="C:/boost_1_70_0/stage/lib"

设置Windows环境变量
可以设置一些Windows的环境变量,如下:

Environment Vairables --> System variables添加:
BOOST_INCLUDEDIR --> C:\boost_1_70_0\libs
BOOST_LIBRARYDIR --> C:\boost_1_70_0\stage\lib
BOOST_ROOT --> C:\ROS\boost_1_70_0

或者添加到Path环境变量中。

找不到OpenSSL库

OpenSSL下载源码需要编译,这里直接安装OpenSSL,下载并安装 了Win64OpenSSL-3_0_5.msi

Environment Vairables --> System variables添加:
OPENSSL_CRYPTO_LIBRARY --> C:\Program Files\OpenSSL-Win64\lib
OPENSSL_INCLUDE_DIR --> C:\Program Files\OpenSSL-Win64\include
OPENSSL_LIBRARIES --> C:\Program Files\OpenSSL-Win64\lib
OPENSSL_ROOT_DIR --> C:\Program Files\OpenSSL-Win64

参考

Failed linking to boost library with CMake generated project file for MSVC9
Windows OpenSSL Could NOT find OpenSSL解决方案
Win32/Win64 OpenSSL: https://slproweb.com/products/Win32OpenSSL.html
CMake not able to find OpenSSL library
cmake Could NOT find Boost (missing: xxx 的问题解决
CMake unable to load boost 1.78.0 components in visual studio 2019
https://docs.microsoft.com/: CMake projects in Visual Studio

### 如何在 Visual Studio 2019 中配置 CMake #### 创建新的 CMake 项目 为了创建一个新的基于 CMake 的项目,可以按照如下方式操作: 通过启动 Visual Studio 并选择 "Create a new project" 来开始新项目的创建过程。当被询问到所期望使用的模板时,应该挑选支持 CMake 的选项。 一旦选择了合适的编程语言(比如 C++),并且确认了要使用的是空白的 CMake 项目之后,就可以继续命名并定位这个即将诞生的新工程[^1]。 对于已经存在的解决方案尝试添加额外的 CMake 子项目可能会遇到 `CMakeLists.txt` 文件冲突的问题;这是因为每一个子项目通常都需要自己的顶层构建脚本文件来定义其自身的编译规则和依赖关系。如果试图在一个已经有同名顶级 `CMakeLists.txt` 文件的位置再次引入另一个具有相同名称的文件,则会导致无法区分哪个才是真正的根级描述符而报错阻止进一步的操作。 #### 解决方案中的多 CMake 项目共存问题 针对上述提到的情况——即在同一解决方案内想要加入更多独立运作但仍需共享某些设置或资源的 CMake 工程实例时,建议采取的方法之一是在更高层次建立一个总的父级 CMake 配置文档作为整个集合体的核心控制器,并让各个成员各自维护自己特定部分的小型化版本控制逻辑。这样做不仅能够有效规避重复文件带来的困扰,还便于统一管理和协调不同模块间的关系。 另外一种方法则是调整现有工作流以适应单个大型综合性的单一入口点模式下的开发需求,这可能涉及到重构原有的结构布局使之更适合于当前环境的要求。 #### 处理预设文件与自动生成的内容差异 有时会发现 IDE 自动生成了一些辅助性质的数据存储单元如 preset 和 user 类型的 JSON 结构用于保存临时状态或是个性化偏好设定等信息。然而这些并非正式组成部分也不参与实际编译流程之中。因此如果不小心误删掉了它们也无妨,只需重新加载对应的源码包即可恢复初始状况[^2]。 值得注意的是,在较新版次的集成环境中,默认情况下或许不再生成旧式的 `CMakeSettings.json` 而转而采用更为现代化的方式来进行跨平台兼容性和灵活性方面的优化改进措施。 #### 初始化 HM 或 OpenCV 这样的第三方库 考虑到像 HM (High Efficiency Video Coding Reference Software) 或者计算机视觉领域常用的开源框架 OpenCV 等外部依赖项的存在,开发者往往还需要经历几个必要的前期准备工作才能顺利将其融入本地的工作站当中去[^3][^4]。 具体来说就是先要在目标应用程序所在的磁盘路径下面单独开辟一块空间用来放置由官方发布的 tarball 归档或者是 git 版本控制系统克隆下来的最新快照副本。接着利用命令行界面切换至刚才准备好的目录之下执行相应的初始化指令集完成初步组装动作。 最后一步便是依据个人喜好编写一段简单的测试程序验证一切是否正常运转起来。例如对于图像处理任务而言,可以通过调用 OpenCV 提供的功能接口读取一张图片显示出来检验安装成果。 ```cpp #include <highgui/highgui.hpp> using namespace cv; int main() { Mat image = imread("test.png"); imshow("Test", image); waitKey(); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值