编译zthreads

时间:2009-04-07 04:55:25

标签: c++ makefile

我下载了zthreads(在这里找到:http://zthread.sourceforge.net/)并尝试编译但是我从make中得到了这个错误:

MutexImpl.h:156: error: there are no arguments to 'ownerAcquired' that depend on a      template parameter, so a declaration of 'ownerAcquired' must be available

MutexImpl.h:156:错误:(如果使用'-fpermissive',G ++将接受您的代码,但不允许使用未声明的名称)

然后对于该源文件中的每个函数,我都会遇到这种错误:

MutexImpl.h:167: error: there are no arguments to 'function' that depend on a template parameter, so a declaration of 'function' must be available

所以我猜这是一个makefile错误,但我不确定如何告诉make告诉g ++使用-fpermissive编译文件。有谁知道怎么把它放到makefile中(如果那是问题)?

3 个答案:

答案 0 :(得分:3)

CXXFLAGS + = -fpermissive

答案 1 :(得分:2)

标准gmake约定是使用CXXFLAGS变量将选项传递给C ++编译器。您可以利用这一事实以及一个名为“命令行覆盖”的功能,通过以这种方式调用gmake,将额外的标记添加到传递给g ++的标志上:

make CXXFLAGS+=-fpermissive

我自己下载了源代码以验证它是否有效并发现它确实存在,尽管仍然会发出一堆其他警告。如果您打算继续使用该库,您可能希望记录这些问题的错误。

希望这有帮助,

Eric Melski

答案 2 :(得分:1)

我摆脱了更改代码的所有这些错误:对于每个错误的行,添加this->引发错误的功能。在引用的行中:

必须通过this-> ownerAcquired

更改

ownerAcquired

我希望这会有所帮助