首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >项目的库位置

项目的库位置
EN

Stack Overflow用户
提问于 2010-09-21 03:34:43
回答 3查看 303关注 0票数 2

我已经开始了一个针对C++的linux项目。我在想.那个应该放在哪里。他们是否应该进入项目文件夹中,这样用户在获得程序后就可以简单地运行它?或者,用户在运行我的程序之前,是否应该在linux机器上安装SFML库?

EN

回答 3

Stack Overflow用户

发布于 2010-09-21 09:37:12

即使您包含了.so文件,也不能保证用户能够运行它(不同的体系结构,链接到不同libc的库,等等)。无论是静态链接,还是让它们自己提供支持库都更好。

@JoelJ.Adamson对使用autoconf的回答是个好主意。SFML没有附带pkg-config文件,因此您将按如下方式检查SFML:

代码语言:javascript
代码运行次数:0
运行
复制
dnl Checking for a C++ compiler
AC_PROG_CXX

dnl Checking C++ features. This tells configure to use the C++ compiler for checks.
AC_LANG_PUSH([C++])
dnl Check for a SFML header.
AC_CHECK_HEADER([SFML/Config.hpp], [], [AC_MSG_ERROR([SFML headers not found.])])
AC_LANG_POP([C++])

由于名称混乱等原因,检查库变得有点困难。Tyler McHenry在这一部分写了一个good article,如果你想彻底的话。

票数 2
EN

Stack Overflow用户

发布于 2010-09-21 04:10:12

在发行版级别,SFML将是一个依赖项,即用户在编译您的程序之前必须安装它(或者他们的包管理器必须安装它)。如果用户想要编译它,他们还需要头文件(通常需要安装一个单独的"devel“包)。您不应该分发.so文件,而且(对每个人来说)不分发可能更好。

您需要检查用户是否拥有它,例如,使用autoconf时,您需要在应用程序项目的configure.ac中检查相关的头文件。例如,要检查数学库,因为我使用的是exp()函数,所以我将使用

代码语言:javascript
代码运行次数:0
运行
复制
AC_CHECK_LIB([m], [exp])

若要在configure步骤中创建检查,请执行以下操作。幸运的是,autoscan可以为您检查这一点,并创建名为configure.scan的框架configure.ac文件。另请参见Cmake

HTH。

票数 1
EN

Stack Overflow用户

发布于 2010-09-21 04:14:57

你应该让你的程序依赖于它所需要的特定库(和版本)。如果你计划将它打包到rpm/deb文件中,你也应该在那里添加依赖项,以便包管理器可以检查和应用它(例如,apt可以安装给定包的所有依赖项包)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3754853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档