【问题标题】:Hide common parent folders of project files in Premake在 Premake 中隐藏项目文件的公共父文件夹
【发布时间】:2015-10-17 22:32:19
【问题描述】:

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

无论如何,我遇到的问题是我编写了一个 Premake 脚本。一切正常,但令人烦恼的是,它在项目中包含的所有文件之间包含多个共同的父文件夹。因此,您必须先打开多个文件夹,其中只包含一个文件夹,然后才能开始操作。这是一张图片,以便您理解:premake_common_parent_folders

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

  • 构建
    • premake4.lua
    • premake4.4-beta5.exe
    • 静态库
      • 包括
        • 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 和 [项目名称])之间共有的父文件夹。

希望它看起来像这样:premake_no_common_parent_folders

【问题讨论】:

    标签: visual-studio lua buildconfiguration premake


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这正是我想要的。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-08-23
    • 2014-07-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    相关资源
    最近更新 更多