-
-
Notifications
You must be signed in to change notification settings - Fork 808
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
支持 vcpkg 静态链接 x86-windows-static-md和x64-windows-static-md #998
Comments
我支持上了,你更新到dev分支版本再试试, add_requires("vcpkg::tiff", {configs = {vs_runtime = "MD"}}) |
CMAKE 文件cmake_minimum_required (VERSION 2.8) project (opencvtest) add_executable(${PROJECT_NAME} ${DIR_SRCS}) 1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Release Win32 ------ xmake.lua 文件add_rules("mode.debug", "mode.release") target("opencvtest") PS D:\test\opencvtest> xmake PS D:\test\opencvtest> |
xmake 默认编译是 MT 的。你只切了 add_requires 里面库使用 MD,但是外面的 main.cpp 还是默认的 MT 。这个你要自己通过 add_cxflags 切。。 if is_plat("windows") then
add_cxflags("/MD")
end |
使用vcpkg 相关opencv3有中括号的依赖opencv3[core,dnn,flann,jpeg,opengl,png,tiff,webp], add_requires(" ??")里怎么填PS D:\test\opencvtest> vcpkg.exe list Total elapsed time: 813.9 us The package opencv3:x86-windows-static-md provides CMake targets:
xmake.lua 怎么添加 相关依赖opencv3, 按照下面的代码发现依赖库没写全add_rules("mode.debug", "mode.release") target("opencvtest") PS D:\test\opencvtest> xmake |
原样填到
xmake只会添加当前指定的opencv3,缺什么补什么,其他的也补到 add_requires/add_packages |
增加后还是发先没有正常链接 xmake.luaPS D:\test\opencvtest> type .\xmake.lua target("opencvtest") 编译PS D:\test\opencvtest> xmake |
刚说了 缺什么补什么,其他的也补到 add_requires/add_packages 你只指定了 vcpkg::opencv3[core,webp] 带有支持webp特性的opencv3,但是webp库还是没加入 add_requires/add_packages |
目前xmake没有对vcpkg的包做级联依赖展开,只能自己挨个加上,是否可以通过[]里面指定的依赖来自动拉取依赖 我还需要评估下 目前你先手动外面自己配置全所有依赖包 |
1、手动添加依赖包正常 xmake.luaadd_rules("mode.debug", "mode.release") target("opencvtest") |
这是由于 opengl vcpkg提供的库信息是 OpenGL32.Lib,后缀名大写导致被xmake丢弃了,我改进了下对vcpkg输出信息的解析支持。。 你再试试: |
opengl链接已经没有问题,感谢 |
如果vcpkg的包做级联依赖展开如果能实现比较好,手动添加相对比较麻烦。 |
目前看级联依赖还不太好做,就比如传入的是 目前看只能用户自己配置需要的所有依赖包,而且内置级联依赖,对于用户外层设置了多个包的情况下,相互之间的依赖库顺序也不太好调整控制,反而会容易出现各种链接unreference失败问题。 所以先就这样吧。 |
你在什么场景下需要该功能?
项目开发需要,项目需要静态链接
vs 2019 默认使用MD, 需要链接vcpkg 静态库(x86-windows-static-md/x64-windows-static-md)
描述可能的解决方案
之前使用 cmake
CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
设置VCPKG_ROOT所在的位置
set(CMAKE_TOOLCHAIN_FILE "$ENV{Vcpkg_BuildSystemPath}/vcpkg.cmake")
set(VCPKG_TARGET_TRIPLET "x86-windows-static-md") 或 set(VCPKG_TARGET_TRIPLET "x64-windows-static-md")
描述你认为的候选方案
请尽量清晰精准地描述你能接受的候选解决方案。
其他信息
xmake v2.3.8+202010172356, A cross-platform build utility based on Lua
目前尝试
使用add_requires("vcpkg::tiff", {configs = {shared = false, vs_runtime = "MD"}})报错
checking for Microsoft Visual Studio (x64) version ... 2019
error: ...mdir\core\sandbox\modules\import\core\base\scheduler.lua:47: only support static libraries with /MT[d] for vcpkg!
stack traceback:
[C]: in function 'error'
The text was updated successfully, but these errors were encountered: