Я храню все свои исходные файлы в отдельном месте, чтобы мой багажник был чистым и организованным. Я просто указываю на это местоположение «SourceCode» в моих файлах lua, но устанавливаю свое «местоположение» в совершенно отдельный каталог «сборок». По большей части это дает именно тот тип поведения, который мне нужен, и кажется элегантным решением. Кроме...
Когда я запускаю premake для создания файлов проекта, он создает элементы Link для каждого включенного файла (элемент Compile). В результате при открытии файла решения создается посторонняя папка. Эта папка больше никогда не используется.
Ex выдержка из сгенерированного файла проекта:
<ItemGroup>
<Compile Include="..\..\SourceCode\FileUtilities\FileUtilities.cs">
<Link>SourceCode\FileUtilities\FileUtilities.cs</Link>
</Compile>
<Compile Include="..\..\SourceCode\FileUtilities\FileWriter.cs">
<Link>SourceCode\FileUtilities\FileWriter.cs</Link>
</Compile>
</ItemGroup>
При открытии решения в VS2013 создаются папки «bin» и «obj» (при необходимости). Но дополнительный каталог «SourceCode» (и его дочерние элементы) также создается, но больше никогда не используется. Есть ли флаг, который я могу использовать, чтобы просто сказать premake НЕ включать блоки ссылок в файлы проекта?
Я использую premake5.
Вот как настроена моя структура каталогов:
\trunk\builds
\trunk\SourceCode\<Contains separate folders for each projects source code>
\trunk\premake\solutions\<contains premake solution files>
\trunk\premake\projects\<contains premake project files>
\trunk\premake\configurations\<contains premake configuration files>
файл решения шаблона, 'solution-Template.lua':
solutionName = "Template"
solution(solutionName)
location("../../builds/" .. solutionName)
--Include a configuration file to define all your build settings
include "../configurations/configurations-Template.lua"
--List all the projects contained in your solution.
--Note: The first project will be the default StartUp project
include "../projects/project-Template.lua"
include "../projects/project-AnotherProject.lua"
файл проекта шаблона, 'project-Template.lua':
projectName = "Template"
buildLocation = projectName
if solutionName ~= nil then
buildLocation = solutionName .. "/" .. projectName
end
project(projectName)
location("../../builds/" .. buildLocation)
--kind is the output type of the project.
--https://github.com/premake/premake-core/wiki/kind
kind "SharedLib"
--language is the programming language the project is written in
--https://github.com/premake/premake-core/wiki/language
language "C#"
targetdir("../../builds/" .. buildLocation .. "/bin/%{cfg.buildcfg}")
--List all the files used in the project using relative paths
--The wild card "*" works (e.g. *.cs). "**" checks all child folders
files
{
"../../SourceCode/Template/File1.cs",
"../../SourceCode/Template/File2.cs",
"../../SourceCode/Template/Etc.cs"
}
--List all the libraries/references that your project uses, including
--other projects
links
{
"System",
"Template"
}
файл конфигурации шаблона, 'configurations-Template.lua':
configurations { "Debug", "Release" }
--Define the platform configuration names. These can be named anything.
--Visual Studio will default to the first value upon opening the solution.
--Note: Be careful, 'Win32' is a predefined name and will be replaced with 'x86' even if
--you set the architecture to "x64".
platforms { "Win64", "Win32" }
--Set all the filters needed to produce the desired build/platform configuration results.
--https://github.com/premake/premake-core/wiki/Configurations_And_Platforms
filter "configurations:Debug"
defines { "DEBUG" }
flags { "Symbols" }
filter "configurations:Release"
defines { "NDEBUG" }
optimize "On"
filter { "platforms:Win32" }
system "Windows"
architecture "x86"
filter { "platforms:Win64" }
system "Windows"
architecture "x64"
Затем я бы запустил следующую команду из командной строки в \trunk\premake:
premake5 --file=./solutions/solution-Template.lua vs2013
В результате в моем каталоге \trunk\builds\ создается папка, а в ней создается папка для каждого проекта. Это именно то, что я хочу (и мой багажник будет в порядке и чистоте). Однако при открытии файла решения в VS2013 автоматически создаются папки для моих каталогов SourceCode вместе с папками bin и obj, но они вообще ни для чего не используются. Насколько я могу судить, это связано с добавлением элементов Link в файлы проекта.