我的premake5脚本可能有什么问题,构建解决方案需要很长时间

时间:2015-11-09 15:26:50

标签: premake

我正在使用premake5版本0.06来生成一个vs2012项目,该项目在目录树中包含大约2个级别的3000多个文件。

该项目包含6个配置和3个平台。

烘焙配置大约需要2分钟,然后大约10秒钟来处理操作并写出解决方案和项目文件。

我想知道这是否是这个文件数量的预期时间,或者我是否可以优化我的预制脚本以改善烘烤时间?

我使用了一些覆盖,并通过使用通配符来包含我的文件。

    files {
        path.join(includeDir,"**.h"),
        path.join(includeDir,"**.inl"),

        path.join(srcDir,"**.h"),
        path.join(srcDir,"**.inl"),
        path.join(srcDir,"**.c"),
        path.join(srcDir,"**.cpp"),
    }

将所有选项置于一个过滤器下是否更好? 为了方便设置,我可以通过不同的功能设置选项,因此有效地为不同的选项多次列出相同的过滤器,例如

setupOption1 = function(args)
   filters( "platforms:win" )
        --set up option1
end

setupOption2 = function(args)
   filters( "platforms:win" )
      --set up option2
end

--with the project 
project("myProject")
   --global setup
   language    "C++"
   kind        "WindowedApp"

   --individual options
   setupOption1(args)
   setupOption2(args)

2 个答案:

答案 0 :(得分:0)

这确实听起来有点长,但由于这仍然是alpha版本,因此现在没有受到密切监控。有an open pull request to reduce memory usage可能有帮助吗?

一般情况下,较少的过滤器应该有所帮助,但如果它产生了显着的差异(除非你真的有批次),我会感到惊讶。

答案 1 :(得分:0)

我发现在文件过滤器中使用**通配符可以减慢构建速度。

class Tryit {   
      public static void main(String args[])   
        throws java.io.IOException { 

        char ch, answer; 
        Scanner scanner = new Scanner(System.in); 
         while(true) {
        System.out.println("Please Enter a Secret Character for another user to guess."); 
        answer = scanner.next().charAt(0);

        System.out.println("There is a Secret character for you...Can you guess it: \n"); 
        ch = scanner.next().charAt(0); 

           if(ch == answer)    
           {   
            System.out.println("** Right **"); 
           }
           else 
          {
          System.out.println("** Try Again **"); 
          } 
        }
      }   
    }

如果我注释掉这些过滤器,现在配置大约需要30秒。