zoukankan      html  css  js  c++  java
  • 去除scons构建动态库的前缀lib

    如何使用scons构建工程,请参考快速构建C++项目工具Scons,结合Editplus搭建开发环境

    编译SharedLibrary项目的时候,生产的so文件时自动加上lib, 例如:

    env = Environment()
    env.SharedLibrary('hello', sources=['hello.c'])

    将以上保存成build.py, 执行编译命令

    scons -f build.py

    生成动态库so的文件名 libhello.so。这样做的好处,自然不用多说。这种lib前缀并不适合所有情况,写这个随笔的也是因为遇到不需要lib前缀的情况。

    参考网上写了一个c的python模块,按照模块的规则,动态库的入口函数必须是"init+模块名",自然生成的动态库也必须跟模块名一致,scons的SharedLibrary构建工具生成的文件名自然就多了个“lib”前缀,例如: libhello.so。 python脚本文件import hello语法就会出错。

    找了很多文章都是教程,只能把scons的源码翻了一下,找到$SHLIBPREFIX这个scons环境变量,使用env的Dump方法查看这个环境变量

    env = Environment()
    print env.Dump()
    [root@A xxx]# scons -f hello.py |grep LIBPREFIX
      'LDMODULEPREFIX': '$SHLIBPREFIX',
      'LIBPREFIX': 'lib',
      'LIBPREFIXES': ['$LIBPREFIX'],
      'SHLIBPREFIX': '$LIBPREFIX',
      '_LIBFLAGS': '${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}',
    [root@A xxx]#

    蓝色字体就是env里面的默认设置,修改方法也就简单了

    env = Environment(SHLIBPREFIX='')

    至此动态库默认前缀lib被去掉了。

  • 相关阅读:
    [UE4]Image
    [UE4]CheckBox
    [UE4]Button
    [UE4]Border
    [UE4]RichTextBlock
    [UE4]Text Box
    [UE4]字体材质
    [UE4]Retainer Box
    [UE4]Invalidation Box
    [UE4]Dynamic Entry Box
  • 原文地址:https://www.cnblogs.com/lovelylife/p/4021269.html
Copyright © 2011-2022 走看看