CMake调用target_include_directories时使用了无效参数。

15

我对CMake还比较陌生。以前我一直在用makefile,但由于Qt Creator的原因,现在被迫使用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

我不知道这意味着什么。请帮帮我。

2个回答

27

如果您查看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})

如果你的可执行文件在公共头文件中使用OpenGL头文件,请将其指定为public,以便链接到它的其他目标也包括OpenGL头文件。

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

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

target_link_libraries(untitled PUBLIC ${OPENGL_gl_LIBRARY})

0

如果您使用了 target_include_directories 或 target_link_libraries,则必须提供可选参数。


目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接