2

我有一个 ruby​​ 扩展的小项目,它的组织方式如下:

./
  Rakefile
  ext/
    mymodule/
      extconf.rb
      mymodule.rb
      mymodule.cpp
      source1.h
      source1.cpp
      source2.h
      source2.cpp

一切正常,但我需要将一些源文件放在一个目录中(我在 git repos 中创建/修改/测试所有这些源文件,以便在测试我的 C++ 代码时只需要更新这个目录)。所以新组织看起来像这样:

./
  Rakefile
  ext/
    mymodule/
      extconf.rb
      mymodule.rb
      mymodule.cpp
      somesourcesfiles/
          source1.h
          source1.cpp
          source2.h
          source2.cpp

我现在的问题是如何指定 extconf.rb 在哪里找到源文件(extconf.rb 默认使用当前目录中的源文件)。

我已经在 extconf.rb 成功测试了这个:

myfiles = %w{somesourcefiles/source1 somesourcefiles/source2 mymodule}
$srcs = myfiles.map{|i| i + ".cpp"}

我收到一条错误消息,说链接器找不到一些“.o”文件,所以我添加了这个:

myfiles = %w{somesourcefiles/source1 somesourcefiles/source2 mymodule}
$srcs = myfiles.map{|i| i + ".cpp"}
$objs = myfiles.map{|i| i + ".o"}

但这没有用。

4

1 回答 1

0

请参阅mkmf 在编译 C 扩展时忽略子文件夹中的文件

$INCFLAGS << " -I$(srcdir)/somesourcesfiles"
$VPATH << "$(srcdir)/somesourcesfiles"
于 2019-06-06T16:21:20.380 回答