C++ 如何为许多包含自包含cpp文件的文件夹制作*/*?

C++ 如何为许多包含自包含cpp文件的文件夹制作*/*?,c++,opencv,makefile,C++,Opencv,Makefile,我正在玩一些教程代码。代码没有任何Makefile,我想创建一个Makefile,它可以生成代码库中的所有文件。我的计划是使用profiling编译所有文件,然后生成一个脚本来运行所有可执行文件并收集gprof结果。然后,我可以直观地了解各种OpenCV函数的计算时间 代码库的安排如下:tutorial\u code/章[1-10]/*.cpp 每个.cpp文件都是自给自足的,无需与此代码库中的其他模块链接即可编译。(不过,也有一些仅限于页眉的小库。) 这里有几件事让我感到骄傲: 通常,Mak

我正在玩一些教程代码。代码没有任何Makefile,我想创建一个Makefile,它可以生成代码库中的所有文件。我的计划是使用profiling编译所有文件,然后生成一个脚本来运行所有可执行文件并收集gprof结果。然后,我可以直观地了解各种OpenCV函数的计算时间

代码库的安排如下:
tutorial\u code/章[1-10]/*.cpp
每个
.cpp
文件都是自给自足的,无需与此代码库中的其他模块链接即可编译。(不过,也有一些仅限于页眉的小库。)

这里有几件事让我感到骄傲:

  • 通常,Makefile中的
    $(EXEC)
    表示一个文件,该文件是大部分构建工作的最终结果。但是,在我的例子中,我想为每个
    .cpp
    文件创建一个单独的
    $(EXEC)
    。我想我已经接近正确了,但到目前为止,我的Makefile只生成
    *.o
    ,而不是
    *.out
  • 我知道
    SOURCES=$(wildcard*.cpp)
    是在当前目录中“收集”cpp文件集的一种方法。
    SOURCES=$(wildcard*/*.cpp)
    将深入并获取子目录中的所有
    .cpp
    文件,这是有道理的。不过,它似乎不起作用


从开始,我设置了一个Makefile来实现建议的功能。它不太管用
$(wildcard*/*.cpp)
似乎没有深入到目录中,我不知道如何执行类似
$的操作。您可以编写一个版本的
wildcard
,它只使用
make
函数递归地工作到任何深度:

find-recursive = \
  $(wildcard $1/$2) \
  $(foreach f,$(wildcard $1/*/.),\
    $(call find-recursive,$(patsubst %/.,%,$f),$2))

SOURCES = $(call find-recursive,.,*.cpp)

$(通配符*/*.cpp)
适合我。你做的对吗?请确定需要向下钻取多少级别的子目录。它现在也适用于我!:)好主意!我也要试试这个。
find-recursive = \
  $(wildcard $1/$2) \
  $(foreach f,$(wildcard $1/*/.),\
    $(call find-recursive,$(patsubst %/.,%,$f),$2))

SOURCES = $(call find-recursive,.,*.cpp)