我已经为linux启动了一个C++ SFML项目。我想知道.so应该去哪里。 他们是否应该进入项目文件夹内,以便用户可以在获取它之后简单地运行该程序?或者应该在用户运行我的程序之前在那里安装了SFML库?项目库位置
Q
项目库位置
1
A
回答
1
在分发级别SFML将是一个依赖项,即在编译您的程序之前,用户必须安装它(或其软件包管理器将不得不安装它)。如果用户想编译它,他们也需要头文件(通常有一个单独的“devel”包来安装)。你不应该分发.so
文件,如果你不这样做,它可能会更好(对每个人)。
您需要检查用户是否拥有它,例如,使用autoconf您需要检查应用程序项目configure.ac
中的相关标题。例如,要检查数学库,因为我使用的exp()
功能,我会用
AC_CHECK_LIB([m], [exp])
创建期间configure
步骤检查。幸运的是autoscan
可以检查这个给你,并创建一个框架configure.ac
文件configure.scan
。另见Cmake。
HTH。
0
你应该让你的程序依赖于它需要的特定库(和版本)。如果您打算将其打包到rpm/deb文件中,则应该在其中添加依赖关系,以便可以由包管理器进行检查和应用(例如apt可以安装给定包的所有依赖包)
1
即使您确实包含了.so
文件,也不能保证用户能够运行它(不同的架构,链接到不同libc的库,...)。要么静态链接,要么更好,只要让他们自己提供支持库。
@Joel J.Adamson回答使用autoconf
是个好主意。 SFML不拿出一个pkg-config
文件,所以你会检查SFML如下:
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++])
检查库是因为名字改编等的有点难度。泰勒麦克亨利在这一部分写了一个good article,如果你想彻底。
相关问题
- 1. VS2010数据库项目备份位置
- 2. Azure项目位置
- 3. TileList项目位置
- 4. RSS4J项目的位置
- 5. Outlook项目到webDAV位置
- 6. iOS UITabBar项目的位置
- 7. Installshield 64位项目设置
- 8. Android ListView项目的位置
- 9. LinearLayout中的项目位置
- 10. 将阵列项目移位4位置
- 11. PrettyPhoto on WordPress - 灯箱位置根据图库项目位置而变化
- 12. PHP项目中外部库的最佳位置是什么?
- 13. nitrous.io项目中postgresql数据库的位置
- 14. VS2015中“SQL Server数据库项目”模板的位置?
- 15. 项目控件中的项目位置同步
- 16. 单击ListView中的项目时获取项目位置0
- 17. 如何获取Visual Studio项目模板中的项目位置?
- 18. Android微调:从特定项目位置显示项目
- 19. 如何更改项目中的项目资源位置?
- 20. 获取操作项目位置
- 21. iOS UITabBar的位置和项目
- 22. 将在DOM项目的位置
- 23. 如何更改loadObjectList()项目的位置?
- 24. Laravel项目文件夹位置的Apache
- 25. 在android项目中的twitter4j.properties的位置?
- 26. 定位项目specifc配置文件
- 27. ListView项目的不同z位置
- 28. 位置SVG项目相对于文本
- 29. Maven项目版本的单一位置
- 30. 变化uinavigation栏项目位置