【问题标题】:cmake equivalent for MakeFile与 MakeFile 等效的 cmake
【发布时间】:2021-12-08 19:28:30
【问题描述】:

我按照this 的回答为一个简单的 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. cd 构建
  3. cmake ..
  4. 制作

第4步中的make抛出如下错误

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 存储库从源代码安装了 embree。我正在使用 Macbook M1 (MacOS Big Sur 11.5.1)。

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

【问题讨论】:

  • include_directories(/usr/local/include/embree3) 将指向 embree3 目录。那里有第二个嵌套的 embree3 目录吗?
  • 也许在你的 CMakeLists.txt 中尝试 include_directories(/usr/local/include) ?
  • @LaurentJospin 非常感谢!进行更改后它可以工作。

标签: c++ cmake makefile embree


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多