程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用 cmake 将 vcpkg 中的库链接到我的库?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用 cmake 将 vcpkg 中的库链接到我的库??

开发过程中遇到如何使用 cmake 将 vcpkg 中的库链接到我的库?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用 cmake 将 vcpkg 中的库链接到我的库?的解决方法建议,希望对你解决如何使用 cmake 将 vcpkg 中的库链接到我的库?有所启发或帮助;

最近在vs2019中尝试使用cmake和vcpkg写一个项目。

想把vcpkg中的动态库链接到自己的动态库,但是遇到了一些麻烦。

希望有人能帮我改正错误。

我的项目结构:

project
-ENGIne
 -ENGIne.h
 -ENGIne.cpp
 -Window.h
 -Window.cpp
 -InstanceManager.h
 -InstanceManager.cpp
 -MouseListener.h
 -MouseListener.cpp
 -KeyboardListener.h
 -KeyboardListener.cpp
-main.cpp
-CMakeLists.txt

CMakeLists.txt:

cmake_minimum_required (VERSION 3.8)

project ("mario")

include_directorIEs("./ENGIne")

find_package(GLEW required)
find_package(glfw3 CONfig required)

add_executable (mario main.cpp)

add_library(ENGIne SHARED
"ENGIne/ENGIne.h" "ENGIne/ENGIne.cpp" 
"ENGIne/Window.h" "ENGIne/Window.cpp"
"ENGIne/InstanceManager.h" "ENGIne/InstanceManager.cpp" 
"ENGIne/MouseListener.h" "ENGIne/MouseListener.cpp" 
"ENGIne/KeyboardListener.h" "ENGIne/KeyboardListener.cpp")

target_link_librarIEs(ENGIne PRIVATE GLEW::GLEW)
target_link_librarIEs(ENGIne PRIVATE glfw)

target_link_librarIEs(mario PRIVATE ENGInE)

它显示 C1083 无法打开包含文件“gl/glew.h”:没有那个文件或目录。 然而,当我写这个:

cmake_minimum_required (VERSION 3.8)

project ("mario")

include_directorIEs("./ENGIne")

find_package(GLEW required)
find_package(glfw3 CONfig required)

add_executable (mario main.cpp
"ENGIne/ENGIne.h" "ENGIne/ENGIne.cpp" 
"ENGIne/Window.h" "ENGIne/Window.cpp"
"ENGIne/InstanceManager.h" "ENGIne/InstanceManager.cpp" 
"ENGIne/MouseListener.h" "ENGIne/MouseListener.cpp" 
"ENGIne/KeyboardListener.h" "ENGIne/KeyboardListener.cpp")

target_link_librarIEs(mario PRIVATE GLEW::GLEW)
target_link_librarIEs(mario PRIVATE glfw)

效果很好。

这是一个错误还是我犯了错误?

解决方法

cmake_minimum_required (VERSION 3.8)

project ("mario")

include_directories("./ENGIne")

set(CXX_STANDARD 11)

find_package(GLEW requIRED)
find_package(glfw3 CONFIG requIRED)

add_library(ENGIne SHARED
"ENGIne/ENGIne.h" "ENGIne/ENGIne.cpp" 
"ENGIne/Window.h" "ENGIne/Window.cpp"
"ENGIne/InstanceManager.h" "ENGIne/InstanceManager.cpp" 
"ENGIne/MouseListener.h" "ENGIne/MouseListener.cpp" 
"ENGIne/KeyboardListener.h" "ENGIne/KeyboardListener.cpp")
target_link_libraries(ENGIne PRIVATE GLEW::GLEW)
target_link_libraries(ENGIne PRIVATE glfw)

add_executable (mario main.cpp)
target_link_libraries(mario PRIVATE GLEW::GLEW)
target_link_libraries(mario PRIVATE glfw)
target_link_libraries(mario PRIVATE ENGInE)

可执行文件也应该链接到 vcpkg 中的库。

,
target_link_libraries(ENGIne PRIVATE GLEW::GLEW)
target_link_libraries(ENGIne PRIVATE glfw)

错了!

应该是:

target_link_libraries(ENGIne PUBLIC GLEW::GLEW)
target_link_libraries(ENGIne PUBLIC glfw)

大佬总结

以上是大佬教程为你收集整理的如何使用 cmake 将 vcpkg 中的库链接到我的库?全部内容,希望文章能够帮你解决如何使用 cmake 将 vcpkg 中的库链接到我的库?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。