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

我刚接触 Premake,正在使用 Premake 4.4 beta 5,因为 Premake 5 在某些情况下无法生成正确的 VS2010 解决方案(会生成带有 2010 编译器的 VS2012 解决方案),并在一个项目中编写 libdirs 和 links 时会对所有项目进行设置。

无论如何,我遇到的问题是我写了一个 Premake 脚本,它的功能都很好,但是在包含到项目中的所有文件之间存在多个公共父文件夹,这是一个烦恼。因此,在进入主要内容之前,您必须打开多个仅包含单个文件夹的文件夹。这里是一张图片,让您了解:premake_common_parent_folders

我的磁盘文件夹结构如下:

  • build

    • premake4.lua
    • premake4.4-beta5.exe
  • src

    • StaticLib

      • include

        • Example.h
      • Example.cpp

    • Test

      • 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

点赞
用户93921
用户93921

理论上(未经测试,我已经很久没有使用Premake 4了),您可以使用virtual paths重写结构。

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

另一方面,Premake 5会自动修整路径顶部的空组,因此如果您升级了,这是不必要的。

说到Premake 5,我不熟悉您提到的任何错误。如果您尚未打开过问题,我将会愿意打赌,“在一个项目下编写libdirs和links来设置所有项目”是项目脚本的问题而不是Premake本身,因为那将是一个非常基本的缺陷。

2015-10-20 18:08:53