我的项目中有多个文件使用 -fPIC
或不使用此选项编译为目标文件。编译这些文件以在共享库中使用时,此选项是必需的,否则不是。因此,当我将项目编译成共享库时,这个选项是必需的。
尽管如此,我永远不确定最后一次编译是否已完成到共享库中。如果没有,我想编译成共享库,编译失败,只好删除生成的目标文件。这些目标文件的重新编译需要相当多的时间,我想避免这种情况。
有没有办法让 makefile 检测目标文件是否在一开始就使用或不使用此选项进行编译,以便编译可以继续,或者两者都必须重新编译,而不会产生错误或花费很多不必要的重新编译循环中的时间?
最佳答案
问:“makefile 有没有办法检测目标文件是否已使用或不使用此选项编译”
简答:否
长答案:如果可以使用不同的选项构建源文件并且您必须同时访问不同的构建,那么您必须有多个输出文件夹。并且 makefile 必须在正确的文件夹中生成它们。 对于简单的调试/发布(“-g”标志)说这样的话:
|
-src
-include
-BUILD
|
-obj
| -debug
| -release
-bin
|-debug
|-release
当然,这种方法有局限性。例如,如果您需要同时拥有“调试/发布”和“PIC/非 PIC”,那么您将需要 4 个输出文件夹。
您还可以将我的方法与@BasileStarynkevitch 提出的方法(生成特定名称)混合使用。
关于c++ - 检查文件是否在 Makefile 中使用某些标志编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48150258/