首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用无效参数调用了cmake target_include_directories

使用无效参数调用了cmake target_include_directories
EN

Stack Overflow用户
提问于 2018-03-28 23:32:26
回答 1查看 11.9K关注 0票数 11

我是cmake的新手。我之前使用的是makefile,但由于QtCreator的原因,我不得不使用cmake。我也在努力学习glfw。我有以下cmake文件:

代码语言:javascript
代码运行次数:0
运行
复制
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})

我得到了以下错误:-

代码语言:javascript
代码运行次数:0
运行
复制
CMakeLists.txt:8: error: target_include_directories called with invalid arguments

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-28 23:40:37

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

target_include_directories( SYSTEM items1... items2......])

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

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

代码语言:javascript
代码运行次数:0
运行
复制
target_include_directories(untitled PRIVATE ${OPENGL_INCLUDE_DIR})

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

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

即使它是可选的,也可以在target_link_libraries中使用此表单,我强烈建议您这样做:

代码语言:javascript
代码运行次数:0
运行
复制
target_link_libraries(untitled PUBLIC ${OPENGL_gl_LIBRARY})
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49538580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档