几年前在Ubuntu 16.0.4上我使用了这个库:git clone https://github.com/Beckhoff/ADS并且只使用make命令,我得到了构建,编译,最后在主目录我找到了一个文件叫AdsLib-Linux。A,也许仅此而已。
现在我在Ubuntu 20.04上,我再次需要这个库,但这次make不能产生相同的输出,并期待ReadMe指令,我最后使用它来代替make:
meson build
ninja -C build
现在创建一个新目录构建但是没有.a文件和以前一样在根目录下。而是在构建目录中创建一个新文件libADSLib.a就在那里。使用右make也会发生同样的事情命令。
也许作者多年来改变了配置文件或工具的行为,但我不能再得到以前的文件,我需要它用于其他引用代码,现在不再执行。
查看MakeFile,我发现在示例中文件夹,与父目录下的文件夹不同,MakeFile有如下内容:$(warning ATTENTION make is deprecated and superseeded by meson)
...
${PROGRAM}: LIB_NAME = ../AdsLib-${OS_NAME}.a
...
但是我已经试着阅读了关于设置,配置,构建,的介子和忍者指南。等等,不再生成那个文件。
我也尝试过首先构建,然后将所有文件从示例文件夹复制到父目录,然后再次构建,但再次没有。a文件。
如何正确配置构建过程,使这个-Linux.a完成文件的创建。或者如果不可能了,它现在生产的东西我可以用来代替以前生产的东西?
Meson是一个构建系统生成器,类似于CMake或有点像。/configure,你需要运行Meson,然后运行ninja才能真正构建一些东西。
你需要同时运行meson和ninja:
meson setup builddir
ninja -C builddir
一旦你成功地这样做了,在builddir
目录中将会有一个libAdsLib.a
。
让我纠正一下@dcbaker,根据他们的README,你应该设置构建构建目录:
# configure meson to build the library into "build" dir
meson build
# let ninja build the library
ninja -C build
当然,一般来说,它不应该是特定的,但是他们的示例代码以一种奇怪的方式编写,所以这个路径是硬编码的。所以,要使用这个例子:
# configure meson to build example into "build" dir
meson example/build example
# let ninja build the example
ninja -C example/build
# and run the example
./example/build/example
关于库:现在是libAdsLib。在build中生成目录中。名称设置在这里,它现在是linux命名风格,旧的一个-不是。所以,你有选项:
更新您使用的配置/构建文件(Makefile?)
复制或制作符号链接,例如
$ ln -s <>/build/libAdsLib。& lt; target_path>/AdsLib-Linux.a
上面它非常依赖于你的开发环境,你有安装或设置脚本吗?您是否有修改/配置目标应用程序参数的权限?您是否需要同时支持新旧名称?-许多问题与最初的介子问题无关。