使用无效参数调用cmake target_include_directories

06odsfpq  于 2023-04-21  发布在  其他
关注(0)|答案(2)|浏览(195)

我对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

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

svmlkihl

svmlkihl1#

如果您查看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头,请将其指定为公共,以便链接到它的其他目标也包含OpenGL头。
我建议您习惯阅读文档,因为它将是您编写CMake脚本的最佳工具。
尽管它是可选的,但对于target_link_libraries也可以采用这种形式,我强烈建议您这样做:

target_link_libraries(untitled PUBLIC ${OPENGL_gl_LIBRARY})
dsekswqp

dsekswqp2#

如果使用target_include_directories或target_link_libraries,则需要可选参数。

相关问题