Visual Studio需要为每次更改重建解决方案

时间:2017-08-15 07:49:48

标签: c++ visual-studio opengl visual-studio-2017 glfw

我目前正在使用c ++编写游戏引擎。随着我进一步深入到项目中,我注意到生成的可执行文件通常不会反映最新的代码更改。但是完全清理解决方案并重建它,解决了问题。不幸的是,完整的重建不再是更大代码库的可行选择。

我已经在stackoverflow上检查了不同的解决方案:

  • 我已经检查了我的"构建并运行"设置设置为"始终 建立"
  • Configuration Manager也设置为" Build"

其他信息:

  • 这是一个OpenGL项目,其中GLFWglad位于c ++
  • 我使用Visual Studio Community 2017版本15.2

这是一个非常烦人的问题,导致很多生产力损失,因为每次我想看到变化时我都必须完全重建整个解决方案。如果有任何意见,我将不胜感激。请询问是否需要更多信息。

我不知道这是否有任何相关性,但这是我在对TestScene.cpp进行一些小改动并重新运行代码时得到的结果: enter image description here

更新

以下是对该问题的深入解释:

  1. 我有一个允许旋转对象TransformerScript.cpp
  2. 的类
  3. 我已将旋转速度设置为1。
  4. 对象按预期旋转。
  5. enter image description here

    1. 现在我将速度浮点值从1更改为0.
    2. 我按下运行(本地Windows调试器)
    3. 这是输出日志:
    4.   

      1> ------ Build build:Project:Star-Engine,Configuration:Debug x64 ------

           

      1> TransformerScript.cpp

           

      1> c:\ users \ haeri \ documents \ github \ space-engine \ star-engine \ src \ header \ matrix4f.h(44):警告C4267:'参数&#39 ;:转换自& #39;为size_t' to' unsigned int',可能丢失数据

           

      1> c:\ users \ haeri \ documents \ github \ space-engine \ star-engine \ src \ header \ matrix4f.h(44):警告C4244:'初始化':从&转换#39;浮动'到' int',可能丢失数据

           

      1> c:\ users \ haeri \ documents \ github \ space-engine \ star-engine \ src \ header \ matrix4f.h(45):警告C4267:'参数&#39 ;:转换自& #39;为size_t' to' unsigned int',可能丢失数据

           

      1> c:\ users \ haeri \ documents \ github \ space-engine \ star-engine \ src \ source \ transformerscript.cpp(13):警告C4244:'参数&#39 ;:转换自& #39;双' “浮动”,可能导致数据丢失

           

      1>编译......

           

      1>生成代码......

           

      1>跳过...(未检测到相关更改)

           

      1> TestScene.cpp

           

      1> Star-Engine.vcxproj - > C:\ Users \ haeri \ Documents \ github \ Space-Engine \ x64 \ Debug \ Star-Engine.exe

           

      c:\ users \ haeri \ documents \ github \ space-engine \ star-engine \ src \ source \ glad.c(51):警告C6308:' realloc'可能会返回空指针:将空指针分配给' exts_i',它作为参数传递给' realloc',将导致原始内存块泄露。

           

      c:\ users \ haeri \ documents \ github \ space-engine \ star-engine \ include \ stb \ stb_image.h(3667):警告C6001:使用未初始化的内存' coutput'。

           

      1> Star-Engine.vcxproj - > C:\ Users \ haeri \ Documents \ github \ Space-Engine \ x64 \ Debug \ Star-Engine.pdb(Partial PDB)

           

      1>完成建筑项目" Star-Engine.vcxproj"。

           

      ==========构建:1成功,0失败,0最新,0跳过==========

      1. 已编译的可执行文件启动
      2. 结果是同一个数字以相同的速度旋转。
      3. 预期行为:无旋转,因为浮动设置为0。
      4. 我被迫"清洁解决方案"和#34;重建解决方案"
      5. 我的笔记本电脑上需要1到2分钟
      6. VS完成重建新解决方案
      7. 我按下运行(本地Windows调试器)
      8. 对象没有移动。 (这是预期的)
      9. 替代方法

        1. 在速度浮动值
        2. 的位置设置断点
        3. 我按下运行(本地Windows调试器)
        4. 有时(90%的情况)会弹出错误提示。其他时间(10%的情况)一切都按预期工作
        5. enter image description here

          1. 我按好了
          2. 已编译的可执行文件启动
          3. 结果是同一个数字以相同的速度旋转。
          4. 预期行为:无旋转,因为浮动设置为0。
          5. 断点是已触发!

2 个答案:

答案 0 :(得分:0)

如果更改位于头文件中,则需要完全重建以便反映我认为的更改。

答案 1 :(得分:0)

我的一个C#项目遇到了同样的问题,并解决了这个问题:

  1. 转到解决方案>特性
  2. 检查配置属性>构造
  3. 就我而言,解决方案中没有为一个项目检查Build标志