Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何在VC++;项目_Visual Studio_Build_Visual C++ - Fatal编程技术网

Visual studio 如何在VC++;项目

Visual studio 如何在VC++;项目,visual-studio,build,visual-c++,Visual Studio,Build,Visual C++,我正在将makefile项目转换为Visual Studio VC++项目。它实际上是C源代码 我在makefile中的一条语句是: echo char * gLibraryBuildSig ="%DATE% %TIME%"; > BuildTimestamp.c 这将生成一个C源文件,其中只有一行: char * gLibraryBuildSig ="Sun 08/23/2009 17:56:05.05"; 在makefile中,我用cl.exe编译所有C源代码,链接之后,删除Bu

我正在将makefile项目转换为Visual Studio VC++项目。它实际上是C源代码

我在makefile中的一条语句是:

echo char * gLibraryBuildSig ="%DATE% %TIME%"; > BuildTimestamp.c
这将生成一个C源文件,其中只有一行:

char * gLibraryBuildSig ="Sun 08/23/2009 17:56:05.05"; 
在makefile中,我用cl.exe编译所有C源代码,链接之后,删除BuildTimestamp.C文件。这给了我一个全局符号,它以字符串形式提供bubild时间

如何在VS2008项目中执行相同的操作?请记住,它不是MSBuild

我在半路上。为了在VisualStudio中生成C模块,我只使用预生成事件

如何将生成的文件包括到编译中,但同时将其从源代码管理和项目管理中排除


或者,有没有更好的方法来满足我的需求

编译器(cl.exe)具有预定义的宏,以及
\uuuu时间戳\uuu
。作为预链接步骤,您可以编译仅包含这些内容的文件。

另一种选择是使用预处理器包含生成的文件:

#include "BuildTimeStamp.c"

包含此文件的文件可以是项目中受源代码管理的文件之一。

我可能晚了10年,但我喜欢这种简单的方法。我的解决办法是

  • 我的预构建步骤:

     echo #define DBJ_BUILD_TIMESTAMP __DATE__ " " __TIME__  > build_time_stamp.inc
    
  • >P>小Inc,包含C和C++中的编译时常数。我通常将其包含在我的
    main.cpp

     #include "build_time_stamp.inc"
    
    由于它是在每次构建时生成的,因此会引发(重新)编译
    main.cpp

     #include "build_time_stamp.inc"
    
  • 用法可能是

    printf( "\nBuild time stamp: "  DBJ_BUILD_TIMESTAMP );
    
  • 如果您不知道GIT需要做什么来提交/同步/推送,那么在每次构建之后,inc文件就不会包含在项目中。在任何情况下,如果您想在更复杂的场景中使用它,只需将其保持在全局常量中:

     constexpr auto build_time_stamp = DBJ_BUILD_TIMESTAMP ;
    

  • 享受……

    FFWD 10年,然后。。。我认为这种方法没有错。它只能作为宏来完成,即<代码> >定义BuffdIdTimePayStAdEdEype”“γ-TimeOx<<代码>,在C和C++中,实际上是编译时间常数(GASP!)…