Предотвратить код :: Блокирует компиляцию всего мира - PullRequest
0 голосов
/ 14 февраля 2019

Win7 SP1 32 бит.C :: B 16.01.

Я хочу обновлять номер версии при каждой компиляции.Я делаю это с помощью шага предварительной сборки, который запускает пользовательскую прогу, которая изменяет #define в файле с именем «Version.h».Version.h НЕ включен ни в один из других исходных файлов C.

У меня есть один исходный файл с именем Version.c, который включает Version.h.У него есть одна функция, которая strcpy определяет область, выделенную одной функцией в Subrouthes.c.

Вот мои настройки:

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, а не другие?

На вкладке «Настройки» -> «Компилятор» -> «Параметры сборки» я обнаружил нечто, называемое ...

«Пропустите проверку зависимостей, чтобы вычислить, какие файлы должны быть скомпилированы»

, но я уверен, что это будетбомба замедленного действия, которая однажды удалит мое лицо.

Спасибо за любую помощь в этом вопросе.

Марк.

...