在 Makefile 中循环 bash

在 Makefile 中循环 bash

我需要编写一个 Makefile,将当前目录下的每个 .cpp 编译为 .so 文件(使用标志 -shared -fPIC),并将 .so 文件复制到“../../dir/”目录中,不带“.so”扩展名。

例如,如果文件名是“div.cpp”,我需要将其编译为“div”并复制到../../dir/。

答案1

find是一种对多个文件进行批量命令的相当有用的方法,但它只携带完整的文件名,这意味着,当在参数中使用时,-o它会生成file.cpp.so。但我们可以在那之后进行清理。

find -maxlevel 1 -iname '*.cpp' -exec g++ -shared -fPIC -o {}.so {} \;
rename 's/cpp\.so$/so/i' *.cpp.so
cp *.so ../../dir

相关内容