我需要编写一个 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