我是Premake的新手。我正在使用Premake 4.4 beta 5,因为Premake 5有一些问题,它不能生成适当的VS2010解决方案(使用2010编译器生成VS2012解决方案),并且在一个项目下编写时为所有项目设置libdirs和链接。
无论如何,我遇到的问题是我写了一个Premake脚本。一切正常,但有一个烦恼,它包括项目中包含的所有文件之间的多个父文件夹。所以你必须打开多个文件夹,只包含一个文件夹,然后再开始讨论。这是一张图片,以便您理解:premake_common_parent_folders
我在光盘上的文件夹结构如下所示:
这是我的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
答案 0 :(得分:1)
理论上(未经测试,我很长时间没有使用过Premake 4)你可以使用virtual paths来重写结构。
vpaths {
["*"] = "../src/"
}
另一方面,Premake 5会自动修剪路径顶部的其他空组,因此如果升级则不需要这样做。
说到Premake 5,我不熟悉你提到的任何一个错误;你应该open an issue,如果你还没有。我愿意打赌“在一个项目下编写所有项目的libdirs和链接”是你的项目脚本而不是Premake本身的问题,因为这将是一个非常基本的缺陷。