vcpkg 使用 cmake 编译C/C++工程代码时指定使用静态库链接编译

参考文献:

CMake 项目中的 vcpkg | Microsoft Learn

c++ - Using static Boost libraries with vcpkg and CMake - Stack Overflow

Vcpkg updates: Static linking is now available - C++ Team Blog (microsoft.com)

microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS (github.com) 

参考例子:

./vcpkg install boost:x86-windows-static

CMAKE命令行:(一)

cmake .. -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x86-windows-static

CMakePresets.json 配置文件设定:(二)

"cacheVariables": {
  "CMAKE_TOOLCHAIN_FILE": {
    "value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
    "type": "FILEPATH"
  },
  "VCPKG_TARGET_TRIPLET": "x64-windows-static"
},

Visual Studio 上打开VC++工程,在工程属性面板中:vcpkg -> Use Static Libraries 选项设置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在Android中使用CMake编译.so文件,需要引用另一个module的C++代码和库,可以按照以下步骤进行配置: 1. 在CMakeLists.txt文件中,使用`add_subdirectory`命令添加其他module的CMakeLists.txt文件,例如: ``` add_subdirectory(../othermodule ${CMAKE_BINARY_DIR}/othermodule) ``` 其中,`../othermodule`是其他module的路径,`${CMAKE_BINARY_DIR}/othermodule`是其他module的构建目录。 2. 在CMakeLists.txt文件中,使用`target_link_libraries`命令链接其他module的库文件,例如: ``` target_link_libraries(mylib otherlib) ``` 其中,`mylib`是要编译的库文件名,`otherlib`是其他module编译的库文件名。 3. 在Android.mk文件中,使用`LOCAL_STATIC_LIBRARIES`指定链接静态库文件,例如: ``` LOCAL_STATIC_LIBRARIES := othermodule_static ``` 其中,`othermodule_static`是其他module编译静态库文件名。 4. 在build.gradle文件中,使用以下代码进行配置: ``` android { defaultConfig { ndk { abiFilters "armeabi-v7a", "x86" } externalNativeBuild { cmake { cppFlags "-std=c++11 -frtti -fexceptions" arguments "-DANDROID_PLATFORM=android-21", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_STL=c++_shared" } } } externalNativeBuild { cmake { path "CMakeLists.txt" } } } ``` 其中,`path`指定CMakeLists.txt文件的路径。 这样配置后,CMake就会自动链接其他module的库文件,并且可以正确使用其他module中的C++代码。需要注意的是,其他module的CMakeLists.txt文件中需要将C++代码和库编译成可供链接的形式,例如生成静态库或动态库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值