2015-10-17 111 views
0

我是Premake的新手。我使用的是Premake 4.4 beta 5,因为Premake 5有几个问题,它不会生成正确的VS2010解决方案(使用2010编译器生成VS2012解决方案),并且在一个项目下编写所有项目时会设置libdirs和链接。在Premake中隐藏项目文件的常见父文件夹

无论如何,我遇到的问题是我写了一个Premake脚本。这一切都可以正常工作,但是它包含了项目中包含的所有文件之间共同的多个父文件夹的烦恼。所以你必须打开包含一个文件夹的多个文件夹,然后才能吃到肉。这里的是一个图像,让你明白:premake_common_parent_folders

上盘我的文件夹结构看起来是这样的:

  • 构建
    • premake4.lua
    • premake4.4-β5 .exe
  • SRC
    • StaticLib
      • 包括
        • example.h文件
      • Example.cpp
    • 测试
      • Example.cpp

这里是我的Premake:

_targetdir = '../bin/' .. _ACTION 

local function ProjectCommon() 
    targetdir(_targetdir .. '/' .. project().name) 
    files { 
    '../src/' .. project().name .. '/**.*', 
    } 
    includedirs { 
    '../src/' .. project().name .. '/include', 
    } 
end 

solution('Example') 
    location(_ACTION) 
    configurations { "Release", "Debug" } 

project('Test') 
    ProjectCommon() 
    language('C++') 
    kind('ConsoleApp') 
    includedirs { 
    '../src/StaticLib/include', 
    } 
    libdirs { 
    _targetdir .. '/StaticLib', 
    } 
    links { 
    solution().name, 
    } 

project('StaticLib') 
    ProjectCommon() 
    targetname(solution().name) 
    language('C++') 
    kind('StaticLib') 

我想知道是否有办法有直属的实现文件带有单个包含文件夹的项目。隐藏所有项目文件(src和[Project Name])之间通用的父文件夹。

的希望是有它看起来像这样:premake_no_common_parent_folders

回答

1

在理论(未经测试,我没有使用Premake 4在很长一段时间),可以使用virtual paths改写结构。

vpaths { 
    ["*"] = "../src/" 
} 

另一方面,Premake 5会自动修剪路径顶部的空白组,因此如果升级,则不需要这样做。说到Premake 5,我并不熟悉你提到的任何一个bug;如果你还没有,你应该open an issue。我愿意打赌“在一个项目下编写所有项目时设置libdirs和链接”与您的项目脚本相比是一个问题,而不是Premake本身,因为这是一个非常重要的缺陷。

+0

这正是我所寻找的。非常感谢你! – RomanRobot

相关问题