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而不能编译其他版本?
在“设置”->“编译器”->“构建选项”选项卡中,我找到了一个叫做...的东西。
“跳过包含依赖性检查以计算需要编译哪些文件”
但是我很确定这将是一颗定时炸弹,有朝一日可以消除我的脸。
感谢您对此事的帮助。
标记。