是否有一种干净/便携的方式从给定的目录递归下降,将所有找到的.cpp
文件编译成单个输出文件?我不确定makefile是否有这种功能,或者它是某种构建脚本的工作,但我想避免将各种IDE的项目文件与我的代码一起保存。Portably编译整个目录
回答
你可以在这里做不同的事情。我建议你使用多平台构建系统,并按照它的文档。我过去使用过CMake,但我不知道如何告诉它在目录中编译所有文件。
其优点是用户可以使用CMake生成大多数常用IDE的项目文件,因此它可以让VisualStudio用户生成VS解决方案,MacOSX用户生成Xcode项目,Eclipse CDK项目几乎适用于任何环境,Makefiles ...
还有可以用来匹配像这样的图案wildcard function:
CXX_FILES = $(wildcard src/*.cpp) # All .cpp files in the directory
这不是递归,但至少可以使你免于在某个目录手动指定文件。建立他们会看起来像这样的规则:
CXX_FILES = $(wildcard src/*.cpp) # All .cpp files in the directory
OBJ_FILES = $(CXX_FILES:src/%.cpp=$(OBJ_DIR)/%.o) # Corresponding .o files
# Rules
all: $(OBJ_FILES)
g++ $(OBJ_FILES) -o output_filename
$(OBJ_DIR)/%.o: src/%.cpp
g++ -c $< -o [email protected]
哦,回答你的问题,这种方法是完全可移植的。
如果它是*完全可移植的*,这是否意味着它也在CP/M上运行?由于该操作系统没有*目录*的概念。而如果你有一个没有GNU Make的平台,你显然依赖它?或者没有安装GCC的系统? – 2011-05-31 18:33:12
+1,因为它回答了问题。不过,我会推荐使用更新的工具,比如'SConstruct'。在这种情况下,增益可能并不明显,但如果您突然需要编译除*之外的所有'.cpp' **,那么您拥有python的所有功能来帮助您:) – ereOn 2011-05-31 18:35:37
-1因为它没有'完全回答这个问题。 – 2011-05-31 18:37:57
- 1. javac如何用通配符编译整个源代码目录?
- 2. 避免编译整个asp.net项目?
- 3. 相克编译多个源目录++
- 4. Maven编译多个src目录
- 5. 编译同一目录
- 6. Java默认编译目录
- 7. Inno Setup编译目录
- 8. Portably找到一个Java类
- 9. 编译目录使用xcodebuild联编
- 10. Webpack编译与源代码目录的一对一编译目录
- 11. jpegtran整个目录
- 12. 将一个目录中的cpp文件编译到另一个目录中
- 13. Guard编译目录的内容到dirname
- 14. 如何更改GHC的编译目录?
- 15. 如何从目录编译java程序?
- 16. 目录编译和运行java文件
- 17. Xcode 4 - 编译输出目录
- 18. smarty模板编译目录不可写
- 19. 在编译后删除'target'目录
- 20. gmake覆盖编译器目录
- 21. ASP.NET的编译文件目录
- 22. 从不同目录编译java文件
- 23. CoffeeScript - 在子目录中编译订单
- 24. 错误编译cannont子目录
- 25. 使用ant(build.xml)编译jni目录
- 26. cmake在编译时检测空目录
- 27. Xcode 8.2.1 Stuck编译资产目录
- 28. java.lang.IllegalStateException:找不到任何编译目录
- 29. 如何从src目录编译到bin目录?
- 30. 替换整个SVN目录
我的投票是先通过一个脚本将所有'.cpp'组装到列表中,然后将该列表作为输入提供给您最喜欢的编译器。由于我不知道可以跨越平台的脚本,所以我会将其保留为commet。 :) – Xeo 2011-05-31 18:23:51
@Xeo至少这样我只需要为每个平台编写脚本一次。 – Maxpm 2011-05-31 18:25:11
@Xeo:您可以直接在makefile中执行此操作 - 请参阅下面的答案。 – 2011-05-31 18:29:15