我想这样组织 C 源代码:
+ /
|
|___ + ext
| |
| |___ + native_extension
| |
| |___ + lib
| | |
| | |___ (Source files are kept in here - may contain sub-folders)
| |
| |___ native_extension.c
| |___ native_extension.h
| |___ extconf.rb
|
|___ + lib
| |
| |___ (Ruby source code)
|
|___ Rakefile
我无法让此设置正常工作mkmf
。文件在native_extension/lib
,其中包括native_extension.c
,被完全忽略。
当我构建扩展时,仅native_extension.{h,c}
已编译,我得到一个不完整的native_extension.{so,dll}
当我尝试运行它时,这会给我带来符号查找错误。
有办法让这个工作吗?
您可以通过“extconf.rb”使用其他文件夹中的源文件,如下所示:
require 'mkmf'
extension_name = 'native_extension'
dir_config(extension_name)
# enum all source files
$srcs = ["native_extension.c", "lib/file.c"]
# add include path to the internal folder
# $(srcdir) is a root folder, where "extconf.rb" is stored
$INCFLAGS << " -I$(srcdir)/lib"
# add folder, where compiler can search source files
$VPATH << "$(srcdir)/lib"
create_makefile(extension_name)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)