用于区分私有和公共标头的C库布局的规范方式

时间:2017-02-11 15:18:19

标签: c scons

我正在尝试编写一个C库。在其他编程语言中学习了私有API和公共API之间的区别在编写库时很重要,所以我想区分这个库中的私有和公共API。现在我正在为项目目录寻找一个好的(和/或规范的)布局。

我假设,这种情况看起来像这样:

./include/mylib/testing.h
./SConstruct
./src/SConscript
./src/testing.c
./test/SConscript
./test/test_testing.c
然后可以将

include/...打包为mylib-dev包,以便链接到应用程序(即/usr/local/include中的内容)。这听起来合理吗?

作为参考,我使用以下scons配置:

from os.path import join

include = Dir('include')
cflags = ['-Wall', '-std=c11']

common_env = Environment(CPPPATH=include, CFLAGS=cflags)

release_env = common_env.Clone(CPPDEFINES=['RELEASE'])

release_env.VariantDir('build/release/src', 'src', duplicate=0)
release_env.VariantDir('build/release/test', 'test', duplicate=0)

debug_env = common_env.Clone(CPPDEFINES=['DEBUG'], CFLAGS=['-g'])

debug_env.VariantDir('build/debug/src', 'src', duplicate=0)
debug_env.VariantDir('build/debug/test', 'test', duplicate=0)

for mode, env in dict(release=release_env, debug=debug_env).iteritems():
    modeDir = join('build', mode)
    library = env.SConscript(join(modeDir, 'src/SConscript'), {'env': env})
    env.SConscript(join(modeDir, 'test/SConscript'), {'env': env})

src/SConscript

Import('env')

env = env.Clone()
lib = env.SharedLibrary('yocto', source=['testing.c'])

0 个答案:

没有答案