0

我按照这个答案为一个简单的 Makefile 创建了一个 CMakeLists.txt

生成文件

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 构建
  2. 光盘构建
  3. 制作..
  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

我通过克隆 git repo 从源代码安装了embree 。我正在使用 Macbook M1 (MacOS Big Sur 11.5.1)。

我对 cmake 很陌生(一天前开始使用它),所以如果这是一个相当愚蠢的问题,我深表歉意。

4

1 回答 1

0

好的,所以按照您对我的评论的回答,问题是由于您通过 embree3 开始包含指令(这对于避免名称冲突是有意义的),cmake 应该将包含 embree3 安装的目录作为包含目录,而不是 embree3 文件夹本身.

这就是为什么 include_directories(/usr/local/include) 而不是 include_directories(/usr/local/include/embree3) 起作用的原因。

于 2021-10-22T08:08:57.347 回答