2015-10-17 117 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

相關問題