防止代码::阻止编译整个世界

时间:2019-02-14 03:06:55

标签: c codeblocks

Win7 SP1 32位。 C :: B 16.01。

我想在每次编译时更新一个版本号。我使用一个预构建步骤来执行此操作,该步骤运行一个自定义编,该编将更改名为“ Version.h”的文件中的#define。其他任何C源文件中都不包含Version.h。

我有一个名为Version.c的源文件,其中确实包含Version.h。它具有一个函数,该函数在Subrouthes.c中的一个函数所分配的区域中strcpy的定义。

这是我的设置:

Version.h:

#define NACU_VERSION    "v0.2.480"

这将通过预构建步骤进行更新。

然后是Version.c:

#include <string.h>

#include    "Version.h"

void Version(char *version) {
    strcpy(version, NACU_VERSION);
}

这是Subroutines.h:

#ifndef _SUBROUTINES_H
#define _SUBROUTINES_H

#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>

void    Usage();
void    BlahBlahBlah(void);
void    ShowScreenHeader(void);

#endif

注意,没有引用Version.h

现在,这是Subroutines.c中引用Version()的魔术函数

#include <windows.h>
#include <stdio.h>

#include    "Subroutines.h"

void ShowScreenHeader(void) {
char    a_version[50];                   // Make some room
extern  void Version(char *version);     // let this func know about the other

    Version(a_version);          // call the func that copies the text
    system("cls");
    printf("Hello from Mark Utility %s (c) 2018, 2019.\n", a_version);

    printf("\n");
}

注意,唯一的连接是函数中对外部的声明。

对Verion.c的唯一真实引用是我已将其包含在项目来源列表中。

但是,每次都编译整个项目(大约7个C文件)。

我怎样才能每次只编译Version.c而不能编译其他版本?

在“设置”->“编译器”->“构建选项”选项卡中,我找到了一个叫做...的东西。

“跳过包含依赖性检查以计算需要编译哪些文件”

但是我很确定这将是一颗定时炸弹,有朝一日可以消除我的脸。

感谢您对此事的帮助。

标记。

0 个答案:

没有答案