小编zed*_*dxz的帖子

在每个make上都会创建预编译的标头?

我有一个非常简单的makefile,基本上可以执行以下操作:

# Pre-compiled header
CORE_PCH_FILENAME =Core.h

CORE_PCH: 
        $(CXX) $(CXX_CFLAGS) -x c++-header $(CORE_PCH_FILENAME)

#Objects
obj/%.o: CORE_PCH %.cpp obj/%.d
        @mkdir -p obj
        $(CXX) $(CXX_CFLAGS) -c $*.cpp -o $@

#Dependencies 
obj/%.d: %.cpp
        @mkdir -p obj
        $(CXX) $(CXX_CFLAGS) -MM -MT obj/$*.o -MF $@ $<
Run Code Online (Sandbox Code Playgroud)

我的问题是,第一次创建Core.h.gch并创建了项目。没关系。

但是,即使没有任何改变,再次运行make也会重新创建Core.h.gch并重新编译所有内容。

如果我没有预编译的标头,make的行为会很好(如果没有任何更改,将不会重建任何东西,并且仅在进行修改后才重建必要的东西)

但是我真的很想拥有一个预编译的头文件,我有没有做错什么!

编辑:

建议以下内容:

# Pre-compiled header
$(CORE_PCH_FILENAME) =Core.h
CORE_PCH: $(CORE_PCH_FILENAME)
    $(CXX) $(CXX_CFLAGS) -x c++-header $(CORE_PCH_FILENAME)
Run Code Online (Sandbox Code Playgroud)

但是它仍然每次都被创建:(

c++ gcc makefile g++ precompiled-headers

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

标签 统计

c++ ×1

g++ ×1

gcc ×1

makefile ×1

precompiled-headers ×1