каталоги cmake target_include_, вызываемые с недопустимыми аргументами

#cmake

Вопрос:

Я очень новичок в 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
 

Я понятия не имею, что это значит. Пожалуйста, помогите мне

Ответ №1:

Если вы посмотрите документацию 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})