Эквивалент cmake для MakeFile

Я последовал этому ответу, чтобы создать CMakeLists.txt для простого Makefile

Makefile

      CC = g++
INCFLAGS = -I/usr/local/include/embree3
LDFLAGS = -L"/usr/local/lib/" -lembree3
RM  = /bin/rm -f

all:
    $(CC) -o main main.cpp $(INCFLAGS) $(LDFLAGS)
clean:
    $(RM) *.o main

CMakeLists.txt

      cmake_minimum_required(VERSION 3.1.0)
project(aaf_project_impl)

include_directories(/usr/local/include/embree3) # -I flags for compiler
link_directories(/usr/local/lib/) # -L flags for linker

add_executable(main main.cpp)

target_link_libraries(main embree)   # -l flags for linking prog target

Makefile компилируется правильно, а исполняемый файл работает без проблем. И чтобы использовать файл cmake, я делаю следующее (при условии, что я нахожусь в исходном каталоге)

  1. mkdir build
  2. cd build
  3. cmake ..
  4. делать

В make на шаге 4 возникает следующая ошибка

      main.cpp:4:10: fatal error: 'embree3/rtcore.h' file not found
#include <embree3/rtcore.h>
         ^~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [CMakeFiles/main.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/main.dir/all] Error 2
make: *** [all] Error 2

Я установил из исходного кода, клонировав embreeрепозиторий git. Я использую Macbook M1 (MacOS Big Sur 11.5.1).

Я очень новичок в cmake (начал использовать его день назад), поэтому прошу прощения, если это довольно глупый вопрос.

1 ответ

Хорошо, поэтому после вашего ответа на мои комментарии проблема в том, что, поскольку вы запускаете свою инструкцию include с помощью embree3 (что имеет смысл во избежание конфликта имен), cmake должен иметь в качестве каталога include каталог, содержащий установку embree3, а не саму папку embree3 .

Вот почему include_directories(/usr / local / include) работает вместо include_directories(/usr / local / include / embree3).

Другие вопросы по тегам