Russian Qt Forum

Qt => Общие вопросы => Тема начата: Akon от Март 24, 2014, 20:55



Название: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Akon от Март 24, 2014, 20:55
Рассмотрим следующую проблему: есть проект на С++/Qt, QtCreator в качестве IDE. Есть две оси, например, Винда и на виртуалке Линукс. Необходимо иметь единые сорцы проекта, при возможности одновременной компиляции из разных ОСей. Qt, QtCreator, естественно, в каждой системе свои и со своими настройками. Например, файлы проекта QtCreator (*.pro.user) должны быть разными.

Кто как решает эту проблему? К примеру, файлы *.pro.user будут затираться при запуске QtCreator.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Alex Custov от Март 24, 2014, 22:03
.pro.user не предназначается для распространения, и должен быть исключён из системы контроля версий. Таким образом, на каждой системе внутри дерева исходников можно создавать свой .pro.user.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: kambala от Март 24, 2014, 22:11
Akon хочет из одного места компилировать. думаю в таком случае оптимальнее всего делать это из командной строки, тогда и не нужно зависеть от настроек креатора (QTDIR же на каждой системе своя, в крайнем случае прописать ее в скрипте).


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Alex Custov от Март 24, 2014, 22:13
Akon хочет из одного места компилировать

Затея, обречённая на провал при первой же попытке сделать что-то некросплатформенное, типа создания ссылок.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Akon от Март 24, 2014, 22:13
Так дерево исходников одно, как мне иметь два файла pro.user для разных Креаторов?

Я хочу прогу запускать (предварительно скомпилировав, если требуется) из под Креатора - удобно. В частности, в среде Креатора для данной проги задается окружение (Path), которое для каждой системы будет свое. Эта инфа хранится в pro.user файле.

Насчет ссылок не понял.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Alex Custov от Март 24, 2014, 22:16
Так дерево исходников одно, как мне иметь два файла pro.user для разных Креаторов?

никак, на каждой системе нужно выделять отдельный каталог для исходников, если никакая VCS не используется.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Old от Март 24, 2014, 22:17
Затея, обречённая на провал при первой же попытке сделать что-то некросплатформенное, типа создания ссылок.
Плюсую.
IMHO, проще и лучше использовать систему контроля версий (я вообще использую локальный репозиторий для этого).
В одном месте:
git push local dev

В другом:
git pull local dev
и собирай сколько хочешь.

bare-хранилище в расшаренной папке.



Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Akon от Март 24, 2014, 22:24
C CVS понятно. Меня интересует вопрос без нее. Вот если заставить Креатор иметь задаваемое (в зависимости от ОСи) имя pro.user файла...


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: twp от Март 24, 2014, 22:42
Есть возможность совместно использовать настройки QtCreator между приложениями в файле *.pro.shared : http://doc.qt.digia.com/qtcreator-2.4/creator-sharing-project-settings.html (http://doc.qt.digia.com/qtcreator-2.4/creator-sharing-project-settings.html)


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Akon от Март 24, 2014, 22:48
Спасибо, на практике это нормально работает, или есть неудобства?


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: snasoft от Март 24, 2014, 22:49
В частности, в среде Креатора для данной проги задается окружение (Path), которое для каждой системы будет свое. Эта инфа хранится в pro.user файле.
файл pro.user к Path не имеет никакого отношения: в нем  максимум содержится информация, касающаяся сборки.
Смотрим содержимое файлов qtenv2.bat
Для Qt под msvc2012 x64 opengl:
Код
DOS
echo off
echo Setting up environment for Qt usage...
set PATH=C:\Qt\5.2.0\msvc2012_64_opengl\bin;%PATH%
cd /D C:\Qt\5.2.0\msvc2012_64_opengl

Для Qt под MinGW 4.8 x32:
Код
DOS
echo off
echo Setting up environment for Qt usage...
set PATH=C:\Qt\5.2.0\mingw48_32\bin;C:\Qt/Tools/mingw48_32\bin;%PATH%
cd /D C:\Qt\5.2.0\mingw48_32

Вот запуск этих скриптов (в данном случае под Win) и позволяет запускать приложения из QtCreator, а не файл pro.user

По поводу вашего вопроса советую прочесть эту тему: crossplatform .pro.user project file (http://qt-project.org/forums/viewthread/6270). Еще в 2011 году человек пытался решить проблему, аналогичную вашей, и ему давали советы на удивление похожие с теми, которые теперь дают вам.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: twp от Март 25, 2014, 11:53
Спасибо, на практике это нормально работает, или есть неудобства?
Этот файл используется в наших проектах, но больше не могу сказать, поскольку я не работал над его созданием.
Каких либо неудобств не замечал.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Akon от Март 25, 2014, 15:19
Цитировать
файл pro.user к Path не имеет никакого отношения: в нем  максимум содержится информация, касающаяся сборки.
Смотрим содержимое файлов qtenv2.bat...
Неправда. Этот файл также определяет и Run Environment (в частности, Path) для конкретного проекта.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Akon от Март 25, 2014, 15:37
*.pro.shared, похоже несколько не то, что мне нужно.

Для сосуществования pro.user файлов приходит в голову использовать pro обертки под каждую ось:
ProjectSrc:
   Project.pro
   Project.win.pro
   Project.linux.pro

Каждый из файлов Project.win.pro, Project.linux.pro просто включает Project.pro. Соответственно, будут разные pro.user файлы.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: snasoft от Март 27, 2014, 21:07
Цитировать
файл pro.user к Path не имеет никакого отношения: в нем  максимум содержится информация, касающаяся сборки.
Смотрим содержимое файлов qtenv2.bat...
Неправда. Этот файл также определяет и Run Environment (в частности, Path) для конкретного проекта.

Ок, вот я создал новый проект для сборки под MinGW, скажите пожалуйста, где в содержимом файла user.pro содержится информация для Path (напомним, что переменная Path представляет собой набор директорий в которых расположены исполняемые файлы источник - Википедия (http://ru.wikipedia.org/wiki/PATH_%28%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%29)). Может мы о разных вещах просто говорим?

Код
XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.0.0, 2014-03-27T22:00:55. -->
<qtcreator>
<data>
 <variable>ProjectExplorer.Project.ActiveTarget</variable>
 <value type="int">0</value>
</data>
<data>
 <variable>ProjectExplorer.Project.EditorSettings</variable>
 <valuemap type="QVariantMap">
  <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
  <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
  <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
  <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
   <value type="QString" key="language">Cpp</value>
   <valuemap type="QVariantMap" key="value">
    <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
   </valuemap>
  </valuemap>
  <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
   <value type="QString" key="language">QmlJS</value>
   <valuemap type="QVariantMap" key="value">
    <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
   </valuemap>
  </valuemap>
  <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
  <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
  <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
  <value type="int" key="EditorConfiguration.IndentSize">4</value>
  <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
  <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
  <value type="int" key="EditorConfiguration.PaddingMode">1</value>
  <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
  <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
  <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
  <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
  <value type="int" key="EditorConfiguration.TabSize">8</value>
  <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
  <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
  <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
  <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
  <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
  <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
 </valuemap>
</data>
<data>
 <variable>ProjectExplorer.Project.PluginSettings</variable>
 <valuemap type="QVariantMap"/>
</data>
<data>
 <variable>ProjectExplorer.Project.Target.0</variable>
 <valuemap type="QVariantMap">
  <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.2.0 MinGW 32bit</value>
  <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.2.0 MinGW 32bit</value>
  <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.520.win32_mingw48.essentials_kit</value>
  <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
  <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
  <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
  <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
   <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QtProjects/build-testApp-Desktop_Qt_5_2_0_MinGW_32bit-Debug</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
     <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
     <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
     <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
     <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
     <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
     <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
     <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
     <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
     <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
     <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
   </valuemap>
   <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
     <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
     <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
     <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
     <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
     <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
   <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
   <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
   <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
   <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
  </valuemap>
  <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
   <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QtProjects/build-testApp-Desktop_Qt_5_2_0_MinGW_32bit-Release</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
     <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
     <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
     <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
     <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
     <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
     <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
     <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
     <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
     <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
     <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
   </valuemap>
   <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
     <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
     <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
     <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
     <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
     <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
   <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
   <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
   <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
   <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
  </valuemap>
  <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
  <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
   <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
    <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
  </valuemap>
  <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
  <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
  <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
   <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
   <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
   <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
   <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
   <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
   <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
   <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
   <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
   <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
   <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
   <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
   <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
   <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
   <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
   <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
   <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
   <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
   <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
    <value type="int">0</value>
    <value type="int">1</value>
    <value type="int">2</value>
    <value type="int">3</value>
    <value type="int">4</value>
    <value type="int">5</value>
    <value type="int">6</value>
    <value type="int">7</value>
    <value type="int">8</value>
    <value type="int">9</value>
    <value type="int">10</value>
    <value type="int">11</value>
    <value type="int">12</value>
    <value type="int">13</value>
    <value type="int">14</value>
   </valuelist>
   <value type="int" key="PE.EnvironmentAspect.Base">2</value>
   <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">testApp</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/QtProjects/testApp/testApp.pro</value>
   <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
   <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">testApp.pro</value>
   <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
   <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
   <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
   <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
   <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
   <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
   <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
   <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
   <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
  </valuemap>
  <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
 </valuemap>
</data>
<data>
 <variable>ProjectExplorer.Project.TargetCount</variable>
 <value type="int">1</value>
</data>
<data>
 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
 <value type="QByteArray">{d398cf3b-ba40-4a52-a1f7-bb898ca143e5}</value>
</data>
<data>
 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
 <value type="int">15</value>
</data>
</qtcreator>
 


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Akon от Март 27, 2014, 22:03
Зайдите в свойства проекта -> Run Environment (или как она по-русски): найдите PATH, нажмите Edit, предварите существующую строку строкой "bla-bla". Ищите "bla-bla" в файле.


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: snasoft от Март 27, 2014, 23:37
Зайдите в свойства проекта -> Run Environment (или как она по-русски): найдите PATH, нажмите Edit, предварите существующую строку строкой "bla-bla". Ищите "bla-bla" в файле.
А зачем вам необходимо модифицировать PATH?
Есть две оси, например, Винда и на виртуалке Линукс. Необходимо иметь единые сорцы проекта, при возможности одновременной компиляции из разных ОСей. Qt, QtCreator, естественно, в каждой системе свои и со своими настройками. Кто как решает эту проблему?
Расскажу на примере компиляции плагина для QtCreator: исходники плагина и QtCreator-а одни для всех машин (реальной Windows, виртуальной Linix x64 и x32 (обе Ubuntu). Располагаются в папке под NTFS файловой системой, которая подключается как расшаренный ресурс в Linux, с этого ресурса и компилируют каждый в свою папку, которая и определяется в user.pro.
Как вариант - смотреть в сторону кросскомпиляции: вот здесь подробная статья (http://habrahabr.ru/post/198142/).


Название: Re: Организация проекта для одновременной компиляции из 2+ ОСей
Отправлено: Akon от Март 28, 2014, 07:18
Цитировать
А зачем вам необходимо модифицировать PATH?
К примеру, я использую какую-либо либу, которая лежит в каком-нидудь месте. Чтобы запустить программу эта либа должна быть доступна загрузчику (PATH). В другом проекте будет другой набор либ и т.п.

Допустим, ваш плагин содержит ассемблерный код. Для компиляции ассемб. файлов используется NASM (соответствующие инструкции вызова находятся в pro-файле (Q_MAKE_EXTERNAL_COMPILER)), NASM лежит в C:\Windows\NASM и в /usr/local/my-special-bins/nasm, например. Как будете выходить из ситуации?