cmake target_include_directories 使用无效参数调用

cmake target_include_directories called with invalid arguments

我是 cmake 的新手。我以前使用过 makefile,但由于 QtCreator,我被迫使用 cmake。我也在尝试学习 glfw。我有以下 cmake 文件:-

cmake_minimum_required(VERSION 3.10)

project(untitled)
find_package(glfw3 3.2 REQUIRED)
find_package(OpenGL REQUIRED)
add_executable(${PROJECT_NAME} "main.cpp")

target_include_directories(untitled ${OPENGL_INCLUDE_DIR})
target_link_libraries(untitled ${OPENGL_gl_LIBRARY})

我得到以下错误:-

CMakeLists.txt:8: error: target_include_directories called with invalid arguments

我不知道这是什么意思。请帮助我

如果您查看 CMake 文档,您会发现它的用法与您所写的有所不同:

target_include_directories(<target> [SYSTEM] [BEFORE]
<INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE>
[items2...] ...])

您会注意到您错过了非可选参数 <INTERFACE|PUBLIC|PRIVATE>

您必须指定包含目录的可见性:

target_include_directories(untitled PRIVATE ${OPENGL_INCLUDE_DIR})

如果您的可执行文件在 public 头文件中使用 OpenGL 头文件,请将其指定为 public,以便 link 的其他目标也包含 OpenGL 头文件。

我建议您习惯阅读文档,因为它将是您编写 CMake 脚本的最佳工具。

即使它是可选的,也可以为 target_link_libraries 采用这种形式,我强烈建议您这样做:

target_link_libraries(untitled PUBLIC ${OPENGL_gl_LIBRARY})