2
A
回答
2
有2个选项:
嵌入的版本信息进库,例如名libmy.so.1.2,它应该在您的安装中软链接到libmy.so以便能够在运行时解决它。修改您的构建工具以适应此。这是一种常用的方法,但不适合构建标签。
您可以尝试通过静态字符串将版本信息嵌入到您的库中。在Unix上,您没有版本信息资源(如在Windows上),所以这是实现它的唯一方法。可能的做法可以是:
a。像这样的东西创建一个C/C +源文件(version.cxx):
#include <version.h>
static char version_stamp[]="\[email protected](#) " PRODUCT " " VERSION " " BUILD_NUMBER;
(根据您的需要改变格式)
湾创建version.h,在其中定义PRODUCT/VERSION/BUILD_NUMBER宏的值。您可以生成/修改此标题作为构建过程的一部分或手动修改它。例如:
#define PRODUCT "MyProduct"
#define VERSION "1.2.1"
#define BUILD_NUMBER "241"
c。确保您的C/C++版本文件(version.cxx)链接到产品中的每个库/可执行文件中。根据需要修改构建工具。
然后在链接库中,你可以使用这个命令来获得它的版本:
strings libmy.so | grep '@(#)'
如果您在计算机上安装了SCCS(一些Unix系统做),你可以运行:
what libmy.so
(这就是为什么我使用上面的@(#)前缀)
顺便说一句,在Windows上可以使用相同的方法:只需将上述头文件包含在带有版本资源定义的.rc文件中将.rc链接到产品中的每个二进制文件中)。因此,您可以在一个地方定义版本,并在所有平台和所有二进制文件上共享。 (2)的另一个好处是,在必要时(例如,在日志文件中),您可以在运行时代码中使用上述头部的版本宏。
相关问题
- 1. 内部版本库设置
- 2. ASP.Net版本号/内部版本号
- 3. 版本内部版本号与TortoiseSNV
- 4. 内部版本VS版本号
- 5. Python版本和库
- 6. xamarin.ios mac生成主机版本不兼容本地版本
- 7. Maven,删除部分版本并替换内部版本号
- 8. MyGet和Cake,生成版本号
- 9. AJAX不是内部版本
- 10. 内部版本号/指纹
- 11. Teamcity自定义内部版本号生成器
- 12. 如何管理外部和内部库的依赖版本?
- 13. BIOS内部版本号和标识号?
- 14. Concourse CI和内部版本号
- 15. 生成补丁WIX - 版本3关闭版本1或版本2?
- 16. Shell脚本:生成报告版本
- 17. Tfs2010内部版本号和汇编文件版本和MSBuild目标
- 18. VS10从调试版本生成发布版本
- 19. 如何比较本地和版本库SVN修订版本?
- 20. 旧版本和新版Android版本的独立版本
- 21. 内部版本号不匹配:Sybase ASE版本问题
- 22. MonoTouch的自动增量内部版本号版本号为
- 23. 参考代码中的内部版本号或版本号
- 24. 显示Silverlight应用程序的内部版本号或版本?
- 25. TeamCity内部版本号与Ant版本号任务
- 26. 在VSTS版本之间共享内部版本号
- 27. 从VSTS数据库版本生成数据更改脚本
- 28. cvs:工作版本与版本库修订版本?
- 29. 在版本库中修改版本而无需修改版本
- 30. SVN:版本库结构2并行版本的主要版本?