隐藏Premake中项目文件的常用父文件夹

时间:2015-10-17 22:32:20

标签: visual-studio lua buildconfiguration premake

我是Premake的新手。我正在使用Premake 4.4 beta 5,因为Premake 5有一些问题,它不能生成适当的VS2010解决方案(使用2010编译器生成VS2012解决方案),并且在一个项目下编写时为所有项目设置libdirs和链接。

无论如何,我遇到的问题是我写了一个Premake脚本。一切正常,但有一个烦恼,它包括项目中包含的所有文件之间的多个父文件夹。所以你必须打开多个文件夹,只包含一个文件夹,然后再开始讨论。这是一张图片,以便您理解:premake_common_parent_folders

我在光盘上的文件夹结构如下所示:

  • 构建
    • premake4.lua
    • premake4.4-beta5.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' )

我想知道是否有一种方法可以直接在具有单个include文件夹的项目下使用实现文件。隐藏所有项目文件(src和[Project Name])之间通用的父文件夹。

希望看起来像这样:premake_no_common_parent_folders

1 个答案:

答案 0 :(得分:1)

理论上(未经测试,我很长时间没有使用过Premake 4)你可以使用virtual paths来重写结构。

vpaths {
   ["*"] = "../src/"
}
另一方面,

Premake 5会自动修剪路径顶部的其他空组,因此如果升级则不需要这样做。

说到Premake 5,我不熟悉你提到的任何一个错误;你应该open an issue,如果你还没有。我愿意打赌“在一个项目下编写所有项目的libdirs和链接”是你的项目脚本而不是Premake本身的问题,因为这将是一个非常基本的缺陷。