项目的cmakelist.txt文件中的代码部分:
# find the required packages
find_package(GLM REQUIRED)
message(STATUS "GLM included at ${GLM_INCLUDE_DIR}")
find_package(GLFW3 REQUIRED)
message(STATUS "Found GLFW3 in ${GLFW3_INCLUDE_DIR}")
find_package(ASSIMP REQUIRED)
message(STATUS "Found ASSIMP in ${ASSIMP_INCLUDE_DIR}")
# find_package(SOIL REQUIRED)
# message(STATUS "Found SOIL in ${SOIL_INCLUDE_DIR}")
# find_package(GLEW REQUIRED)
# message(STATUS "Found GLEW in ${GLEW_INCLUDE_DIR}")
如何在cmake命令中设置参数?如下所示:
cmake -Dxxx=PATH_TO_REQUIRED_PACKAGE_DIR -G xcode
我试着逃跑
cmake -DGLFW3_DIR=/Users/aaronlee/workspaces/cpp/LearnOpenGL-master/glfw-3.3.8 -G xcode
它仍然显示错误:找不到GLFW3(缺少:GLFW3_程式库)
1条答案
按热度按时间r6l8ljro1#
随着时间的推移,我开始喜欢上cmake,但不幸的是,像“如何找到所需的包”这样的问题在cmake中从来没有一个简单的答案。
对于find_package,有两种基本的替代路径来查找包:
1.配置模式:cmake会寻找一个套件组态档(
<packagename>Config.cmake
或类似的档案),其中包含所有关于套件的必要信息。这通常适用于寻找其他已正确安装的cmake套件。CMake会搜寻这个组态档的许多预设位置。若要将它指向特定的位置,您可以指定-D<packagename>_DIR=<path-to-directory-containing-package-config-file>
。1.模块模式:cmake会寻找一个查找脚本,用来查找软件包。这通常适用于查找系统库或其他非cmake库,在这些库中,您必须在系统中搜索某些文件。某些库,如openssl,默认提供查找脚本。其他库可能没有,这意味着您必须自己编写或联机查找。如果您确实有查找脚本,您可以将
CMAKE_MODULE_PATH
设置为包含脚本的目录,这样cmake就可以找到它。一旦脚本运行,您可以根据需要通过指定-D<packagename>_ROOT=<path-to-sysroot-containing-headers-and-lib>
来引导它。为了更具体地帮助你,我们需要知道你需要的软件包是否已经安装到系统中,或者你只是在某个地方 checkout 了它们的源代码。另外,确切的错误信息cmake显示你会很有帮助-它通常会在那里说明是否设置xyz_DIR或xyz_ROOT会有帮助。