Adr*_*aan 5 continuous-integration build-process makefile
我想使用make来结合模块化构建与持续集成,自动单元测试和多平台构建.类似的设置在Java和.NET中很常见,但是我很难将它们整合到make和C/C++中.如何实现?
我的要求:
我从非制作开始.我仍然觉得这是一个很好的起点.
到目前为止的限制:
我的结构看起来像:
Run Code Online (Sandbox Code Playgroud)project_root /algorithm /src /algo1.c /algo2.c /unit_test /algo1_test.c /algo2_test.c /out algo1_test.exe algo1_test.xml algo2_test.exe algo2_test.xml headers.h /embunit /harnass makefile Rules.top
我想保持简单; 这里的单元测试(algo1_test.exe)依赖于'algorithm'组件(ok)和单元测试框架(在构建它时可能知道也可能不知道).但是,将构建规则移到顶部make对我没有吸引力,因为这会在整个系统中分发组件的本地知识.
至于Cygwin路径:我正在使用相对路径进行构建.这解决了/cygdrive/c问题(因为编译器通常可以处理/路径)而不会引入C :(这使得不喜欢).还有其他想法吗?
CMake与相关工具 CTest 和 CDash 似乎可以满足您的要求。值得一看。
Bill Hoffman(首席 CMake 开发人员)在CMake 邮件列表中的一篇文章中提到了Recursive Make Been Harmful论文:
...由于 cmake 正在为您创建 makefile,因此可以避免递归 make 的许多缺点,例如您不必调试 makefile,甚至不必考虑它们是如何工作的。该论文中还有 cmake 为您修复的其他示例。
另请参阅“Recursive Make - 朋友还是敌人?”的答案 这里在 stackoverflow 上。