在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
    • 静态库
      • 包括
        • 范例.h
      • 范例.cpp
    • 测试
      • 范例.cpp

这是我的预制件:

_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和[项目名称])之间公用的父文件夹。

希望它看起来像这样:premake_no_common_parent_folders

珀金斯

从理论上讲(没试过,我已经很长时间没有使用Premake 4了),您可以使用虚拟路径来重写结构。

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

另一方面,Premake 5会自动修剪路径顶部的空白组,因此如果您进行升级,则不需要这样做。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章