我是一个c++初学者,开始学习构建系统。在寻找了一个对初学者更友好的系统之后,我遇到了Meson (CMake对于一个只想把几个文件放在一起的新手来说似乎不太有吸引力)。它看起来很简单,但就像大多数构建系统(我看过的)一样,文档似乎缺乏假设你已经知道构建是如何工作的感觉(这在某种程度上让我想起了先有鸡还是先有蛋的问题)。
我在Windows 10机器上,使用MSYS2堆栈,MinGW64和Meson作为一个包安装。我编写了一些基本代码来学习如何将其拆分为多个文件以实现可管理性。所以我有一个简单的项目,像这样:
Cpp-App
- mylib
- utils.cpp(实现文件)
- utils.h
- main.cpp
我想出了如何包括头文件与include_directories(),但我不知道如何链接他们两个。我也学会了(大概)如何使用这两种方法建立一个库,但不知道如何"使用"。它。例如,程序链接并编译成功,但当我运行程序时,它说:
"加载共享库时错误:libutils.dll:无法打开共享目标文件:没有这样的文件或目录
,尽管结果文件实际上在构建目录中。
你能,请,指导我在哪里挖掘,在一个更基本的注意,初学者在哪里学习这样的东西?在学习现代构建系统之前,我是否需要先学习Make ?c++书籍不会教这些,官方文档和初学者教程会展示孤立的和/或不相关的例子=
主要meson.build
project('cpp-app', 'cpp',
version : '0.1',
default_options : ['warning_level=3', 'cpp_std=c++14'])
subdir('./mylib')
myinc = include_directories ('./mylib')
executable('cpp-app',
'main.cpp',
include_directories : myinc,
link_with : mylib,
install : true)
介子。为库构建:
#project('utils', 'cpp')
mylib = library('utils', sources : ['utils.h', 'utils.cpp'])
我终于能够解决这个问题了。在本例中,您从主构建文件构建库,并在主构建文件中显示库文件所在的位置(*.h和*.cpp)。我去掉了介子。从mylib文件夹中构建并编辑主介子。像这样构建文件:
project('cpp-app', 'cpp',
version : '0.1',
default_options : ['warning_level=3', 'cpp_std=c++14'])
myinc = include_directories ('mylib')
mylibpath = 'mylib/'
utilslib = shared_library('utils', sources : [mylibpath + 'utils.h', mylibpath + 'utils.cpp'])
executable('cpp-app',
'main.cpp',
include_directories : myinc,
link_with : utilslib,
install : true)