如何将库添加到 CMakeLists?
Posted
技术标签:
【中文标题】如何将库添加到 CMakeLists?【英文标题】:How do you add libraries to CMakeLists? 【发布时间】:2014-12-31 20:01:11 【问题描述】:到处搜索后,我找不到任何东西或任何人来帮助我弄清楚如何将 GL GLEW 和 SDL2 库添加到我的 CMakeLists.txt强>。我正在使用 Ubuntu 14.04 LTS,并使用
安装了以下库sudo apt-get install libsdl2-dev #for SDL-2
sudo apt-get install libgl-dev #for GL
sudo apt-get install libglew-dev #for GLEW
这一切都很好,我可以用这个命令在 g++ 中编译
g++ ./main.cpp ./display.h ./display.cpp ./shader.cpp ./shader.h -l SDL2 -l GL -l GLEW
现在我需要切换到 CMake 编译器,但我不知道如何将库 GL、GLEW 和 SDL2 添加到 CMakeLists.txt。
【问题讨论】:
Linking against GLEW with CMake的可能重复 有a whole wiki entry in the official documentation关于这个主题,那里的说明尽可能清楚。 【参考方案1】:包含库的方式取决于几件事。某些软件包(例如 sdl2)具有 pkgconfig 文件,这些文件定义了要使用的库和包含。
Cmake 带有一个 FindPkgConfig 模块,可以为您获取它。
例如:
include(FindPkgConfig)
pkg_check_modules(SDL2 REQUIRED sdl2)
target_link_libraries(executablename $SDL2_LIBRARIES)
您也可以使用 target_link_libraries 函数手动添加它们。
其他软件包具有“查找”模块,例如 GLEW:/usr/share/cmake-*/Modules/FindGLEW.cmake
如@Mikael Persson 所述,CMake 在手册页和他们的 wiki 上有很多很棒的文档。
【讨论】:
我用什么替换可执行文件名? SDL-2.h?我尝试什么都行? wiki 对我也没有多大帮助。我知道 C++,但我不知道如何用库编译 CMake。 可执行文件名是您最终要构建的程序的名称。例如,如果您正在编译一个名为“mygame”的程序,那么它将是“mygame”。您首先必须使用 add_executable() 函数定义可执行文件。例如,您的可能是 add_executable(mygame display.cpp shader.cpp) 有时简单的例子是向您展示某些东西的最佳方式。查看链接:CMakeLists.txt 以获取我的一个使用 CMake 的非常简单的单源程序的示例。复杂示例的另一个好来源是查看 KDE 项目的来源KDE 现在我有 SDL2 工作但对于 Glew 和 GL 它似乎不起作用。我有pkg_check_modules(GL REQUIRED gl)
和pkg_check_modules(GLEW REQUIRED glew)
GLEW 没有 pkgconfig,但 cmake 有一个 FindGLEW
模块。您需要做的就是include(FindGLEW)
,它会设置$GLEW_LIBRARIES
和$GLEW_INCLUDE_DIRS
变量以上是关于如何将库添加到 CMakeLists?的主要内容,如果未能解决你的问题,请参考以下文章