小编Mar*_*rio的帖子

GNU Makefile - 具有一个依赖项的多个目标的模式规则忽略所有目标,但第一个目标

我想做一个语言依赖目标.特别是:我有一个源文件,我想创建不同的对象,其中添加到相应的语言文件夹.单个源文件在C-Flags中会有所不同,编译器会得到.只要我以静态方式使用它,它就可以正常工作.

de/info.o en/info.o es/info.o : info.c
    $(ECHO)     (DEP) $< for $@
Run Code Online (Sandbox Code Playgroud)

现在我想,如果它有点动态,那将是很好的,以防我将添加一个新的语言依赖文件.所以我使用了一个通配符如下:

de/%.o en/%.o es/%.o : %.c
    $(ECHO)     (DEP) $< for $@
Run Code Online (Sandbox Code Playgroud)

但现在它只是制造了第一个目标而忽略了其余的目标.Make-Debug打印以下内容:

Successfully remade target file `de/info.o'.
Considering target file `en/info.o'.
File `en/info.o' was considered already.
Run Code Online (Sandbox Code Playgroud)

以防万一:不,对象不存在.所以没有目标,但是现有的依赖,所以make应该执行规则.

编辑:找到该问题的解决方案.

define FOO

$(1)/%.o : %.c
    $(ECHO)     $$< for $(1)

endef

 $(foreach lang,$(LANGUAGE_LIST), $(eval $(call FOO,$(lang))))
Run Code Online (Sandbox Code Playgroud)

灵感来自:http://www.gnu.org/software/make/manual/make.html#Eval-Function

makefile gnu-make

10
推荐指数
1
解决办法
2405
查看次数

GCC 4.5.2链接器gots使用异常时出现问题(C++)

我尝试写一个网络服务器.就我而言,它适用于Windows.但是我想让它兼容Unix.而且我认为异常类的遗传问题一定存在问题.为了更好地理解,只需要重要的部分:

server.cpp

#include <exception>
#include <stdexcept>

#ifdef __unix__
    #include "UnixSocket.h"
#elif __WIN32__ || _MSC_VER
    #include "WinSocket.h"
#endif

#include "HTTPParser.h"

int main(void) {
    try {
        socket->socketInit(PORT);
    }
    catch (exception &e) {
        cout << endl << "Exception: " << e.what() << endl;
        socket->cleanAll();
    }
return 0
}
Run Code Online (Sandbox Code Playgroud)

NetInterface.h

class NetInterface : public exception {

private:

public:
    virtual void socketInit(const char *port) = 0;
    virtual void cleanAll(void) = 0;
    virtual void cleanPersCon(void) = 0;
    virtual char *akzeptieren(void) = 0;
    virtual void empfangen(void) = …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance webserver gcc exception

1
推荐指数
1
解决办法
5121
查看次数

标签 统计

c++ ×1

exception ×1

gcc ×1

gnu-make ×1

inheritance ×1

makefile ×1

webserver ×1