Эквивалент 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, я делаю следующее (при условии, что я нахожусь в исходном каталоге)
- mkdir build
- cd build
- cmake ..
- делать
В
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).