【问题标题】:can't compile using makefile无法使用 makefile 编译
【发布时间】:2016-09-09 01:08:26
【问题描述】:

我在 ubuntu 上有一些 opencv c++ 代码,其文件夹结构是:

|-- bin
|   |-- camera-calib.o
|   `-- frontalize.o
|-- docs
|   `-- notes.md
|-- LICENSE.md
|-- Makefile
|-- README.md
|-- shape_predictor_68_face_landmarks.dat
`-- src
    |-- calib
    |   |-- calib.cpp
    |   |-- calib.h
    |   |-- POSIT.cpp
    |   |-- POSIT.h
    |   |-- pro
    |   |   |-- calib.o
    |   |   |-- Makefile
    |   |   |-- POSIT.o
    |   |   |-- pro
    |   |   |-- pro.pro
    |   |   |-- pro.pro~
    |   |   `-- util.o
    |   `-- util
    |       |-- calib_util.cpp
    |       `-- calib_util.h
    |-- camera-calib.cpp
    |-- camera-calib.h
    |-- check_resources.h
    |-- fatialfeaturedetect.cpp
    |-- frontalization-models
    |   |-- DataAlign2LFWa.mat
    |   |-- eyemask.mat
    |   `-- model3Ddlib.mat
    |-- frontalize.cpp
    |-- frontalize.h
    `-- main.cpp

我使用的 Makefile 是:

EXE = face_frontalization
OBJ_DIR = bin
CFLAGS = -g -w

dummy_build_folder := $(shell mkdir -p $(OBJ_DIR))

 # c++ source files of the project
CXXFILES = $(shell find src -maxdepth 3 -type f -name '*.cpp')
CXXOBJ = $(patsubst src/%.cpp,bin/%.o,$(CXXFILES))

INCLUDE = -I/usr/include/dlib-18.18
LIBS = `pkg-config --libs opencv`
CXXFLAGS = `pkg-config --cflags opencv` -w -Wall -Wextra -g -std=c++0x
CFLAGS = `pkg-config --cflags opencv` -g -w

ifdef V
MUTE =
VTAG = -v
else
MUTE = @
endif

all: $(EXE)
    # build successful

$(EXE): $(CXXOBJ)
    $(CXX) $(CXXOBJ) -o $(EXE) $(LIBS)

$(OBJ_DIR)/%.o: src/%.cpp
    $(CXX) $(CXXFLAGS) $(INCLUDE) $< -c -o $@
    $(BUILD)

$(OBJ_DIR)/%.o: src/%.c
    $(CC) $(CFLAGS) $(INCLUDE) $< -c -o $@

run: all
    ./$(EXE)

clean:
    # Cleaning...
    -rm -f $(EXE) $(CXXOBJ)
    rmdir bin/

现在我收到此错误:

6 of 7
g++ `pkg-config --cflags opencv` -w -Wall -Wextra -g -std=c++0x -I/usr/include/dlib-18.18 src/calib/util/calib_util.cpp -c -o bin/calib/util/calib_util.o
Assembler messages:
Fatal error: can't create bin/calib/util/calib_util.o: No such file or directory
make: *** [bin/calib/util/calib_util.o] Error 1

我之前没有收到此错误,所以不知道为什么会出现。该文件存在于目录中。我该怎么办?

【问题讨论】:

    标签: c++ makefile


    【解决方案1】:

    看起来你的目录结构有点不对。

    can't create bin/calib/util/calib_util.o: No such file or directory

    根据您的层次结构,您在bin 下没有目录calib/util。尝试创建它并再次运行 make

    【讨论】:

    • 我可以在 Makefile 中添加一些代码,通过查看 src 文件夹结构来自动为我执行此操作吗?
    • here
    • 它是我自己的makefile。这就是我问的原因:)。我的意思是,如果我添加的嵌套目录多于 3 的代码,我将不得不再次修改。如果我想让它更健壮,有什么办法吗?
    • @leehuang 啊,我的错。我以为你在编译opencv。是的,这是一个很好的观点。如果你不告诉它搜索到最大深度(去掉那个标志)怎么办?
    • @leehuang 这很奇怪。它应该默认下降。我刚查了一下,没有问题。您能否在 shell 中运行该命令并查看它是否返回文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2014-10-22
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多