当许多目标使用相同的C 源时,如何加快介子的构建
How do I speed up Meson build when many targets use the same C++ sources
我有一个具有58个目标的新介子项目。他们中的许多人使用相同的 *.cc文件,而梅森为每个目标构建了一个 *.cc文件,这比自动工具慢得多。另外,编译标志在目标之间应相同,因此从理论上讲,梅森应该能够重新使用对象。
建立了许多在介子中得到充分支持的目标?有这样的情况有标准解决方案吗?我可以尝试将项目中的所有资源组织到共享库中,但是随后我必须决定如何对它们进行分组,而使用自动工具,我不必决定这一点。我尚未设法找到有关此文件的文档。
-benri
P.S。这是一个最小示例:
--------文件:app1.cc -------
int f(int x ,int y) {return x;}
int main() { return f(0,1);}
-------文件:Meson.build ------
project('app12','cpp')
executable('app1',['app1.cc'])
executable('app2',['app1.cc'])
----------命令----------------
% meson . meson
% cd meson
% meson configure -Dwarning_level=3
% ninja
您应该看到两次未使用的参数" y"的警告。文件compile_commands.json也有两个条目。
将相同的源再次编译带有相同的编译标志,并且再次只是浪费CPU功率,因为它会产生相同的二进制文件,除非您有不可再现的构建技巧,例如日期和时间。
如果您的意思是为所有目标构建通用代码,则可以只需使用static_library
构建您的代码并将其重复使用您的目标二进制。
在lib.cc
中移动f()
并使用以下meson.build
。
project('app12','cpp')
mylib = static_library('mylib', 'lib.cc')
executable('app1', 'app1.cc', link_with : mylib)
executable('app2', 'app1.cc', link_with : mylib)
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用ndk-build.cmd构建Android.so文件
- 函数何时会在c++中包含stack_Unwind_Resume调用
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- Python中的for循环与C++有何不同
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 构建一个由C和C++文件组成的库
- llvm构建器向基本块添加终止符
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- 如何跨平台将二进制资源构建到程序中?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 如何解决 Ninja c++ 构建和执行问题
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- 使用 Unity 构建加快C++构建速度,并减少标头依赖项
- 当许多目标使用相同的C 源时,如何加快介子的构建