我正在尝试编写一个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'])