Лучший способ установить пользовательскую платформу какао

Су, s>

Поискал это:

для структур :

см. Также :

Ссылки моих предыдущих ответов по какой-то причине больше не работают, поэтому вот еще один ответ от TechNet :

DECLARE @Sourcedb sysname 
DECLARE @Destdb sysname 
DECLARE @Tablename sysname 
DECLARE @SQL varchar(max) 

SELECT @Sourcedb = '<>' 
SELECT @Destdb   = '<>' 
SELECT @Tablename = '<>' --  '%' for all tables 

SELECT @SQL = ' SELECT Tablename  = ISNULL(Source.tablename,Destination.tablename) 
                      ,ColumnName = ISNULL(Source.Columnname,Destination.Columnname) 
                      ,Source.Datatype 
                      ,Source.Length 
                      ,Source.precision 
                      ,Destination.Datatype 
                      ,Destination.Length 
                      ,Destination.precision 
                      ,[Column]  = 
                       Case  
                       When Source.Columnname IS NULL then ''Column Missing in the Source'' 
                       When Destination.Columnname IS NULL then ''Column Missing in the Destination'' 
                       ELSE '''' 
                       end 
                      ,DataType = CASE WHEN Source.Columnname IS NOT NULL  
                                        AND Destination.Columnname IS NOT NULL  
                                        AND Source.Datatype <> Destination.Datatype THEN ''Data Type mismatch''  
                                  END 
                      ,Length   = CASE WHEN Source.Columnname IS NOT NULL  
                                        AND Destination.Columnname IS NOT NULL  
                                        AND Source.Length <> Destination.Length THEN ''Length mismatch''  
                                  END 
                      ,Precision = CASE WHEN Source.Columnname IS NOT NULL  
                                        AND Destination.Columnname IS NOT NULL 
                                        AND Source.precision <> Destination.precision THEN ''precision mismatch'' 
                                    END 
                      ,Collation = CASE WHEN Source.Columnname IS NOT NULL  
                                        AND Destination.Columnname IS NOT NULL 
                                        AND ISNULL(Source.collation_name,'''') <> ISNULL(Destination.collation_name,'''') THEN ''Collation mismatch'' 
                                        END 

   FROM  
 ( 
 SELECT Tablename  = so.name  
      , Columnname = sc.name 
      , DataType   = St.name 
      , Length     = Sc.max_length 
      , precision  = Sc.precision 
      , collation_name = Sc.collation_name 
  FROM ' + @Sourcedb + '.SYS.objects So 
  JOIN ' + @Sourcedb + '.SYS.columns Sc 
    ON So.object_id = Sc.object_id 
  JOIN ' + @Sourcedb + '.SYS.types St 
    ON Sc.system_type_id = St.system_type_id 
   AND Sc.user_type_id   = St.user_type_id 
 WHERE SO.TYPE =''U'' 
   AND SO.Name like ''' + @Tablename + ''' 
  ) Source 
 FULL OUTER JOIN 
 ( 
  SELECT Tablename  = so.name  
      , Columnname = sc.name 
      , DataType   = St.name 
      , Length     = Sc.max_length 
      , precision  = Sc.precision 
      , collation_name = Sc.collation_name 
  FROM ' + @Destdb + '.SYS.objects So 
  JOIN ' + @Destdb + '.SYS.columns Sc 
    ON So.object_id = Sc.object_id 
  JOIN ' + @Destdb + '.SYS.types St 
    ON Sc.system_type_id = St.system_type_id 
   AND Sc.user_type_id   = St.user_type_id 
WHERE SO.TYPE =''U'' 
  AND SO.Name like ''' + @Tablename + ''' 
 ) Destination  
 ON source.tablename = Destination.Tablename  
 AND source.Columnname = Destination.Columnname ' 

EXEC (@Sql)

7
задан Elise van Looij 4 November 2009 в 17:14
поделиться

4 ответа

За последние месяцы я узнал намного больше о фреймворках, поэтому переписываю этот ответ. Обратите внимание, что я говорю об установке фреймворка как части рабочего процесса разработки .

Предпочтительное место для установки общедоступного фреймворка (т. Е. Фреймворка, который будет использоваться более чем одним из ваших приложений или bundles) - это / Library / Frameworks [текст ссылки], потому что «фреймворки в этом месте автоматически обнаруживаются компилятором во время компиляции и динамическим компоновщиком во время выполнения». [Руководство по программированию фреймворков]. Самый элегантный способ сделать это - в разделе «Развертывание» в настройках сборки.

Когда вы работаете над фреймворком, бывают моменты, когда вы действительно хотите обновить фреймворк при выполнении сборки, и периоды, когда вы этого не делаете. т. По этой причине, Я меняю настройки развертывания только в Release Configuration. Итак:

  1. Дважды щелкните целевой объект платформы, чтобы открыть информационное окно Target и переключиться на вкладку Build.
  2. Выберите Release в окне выбора конфигурации.
  3. Прокрутите вниз до раздела Deployment и введите следующие значения:

Deployment Location = YES (установите флажок)

Installation Build Products Location = /

Installation Directory = / Library / Frameworks

Установка Продукты для сборки Местоположение служит корнем установки. Его значение по умолчанию - это некоторый каталог / tmp: если вы не измените его на системный корень, вы никогда не увидите установленный фреймворк, поскольку он скрывается в каталоге / tmp. После перехода на Xcode 4 у меня возник ряд проблем с моей пользовательской структурой. В основном они связывают предупреждения в GDB, которые на самом деле не влияют на полезность фреймворка, за исключением запуска встроенного модульного теста. Я отправил в Apple заявку в службу технической поддержки неделю назад, и они все еще изучают ее. Когда я получу рабочее решение, я обновлю этот ответ, так как вопрос оказался довольно популярным (1 kViews и подсчет).

12
ответ дан 6 December 2019 в 10:51
поделиться

There's not much reason to put a framework into Library/Frameworks, and it's a lot of work: You'd need to either do it for the user in an Installer package, which is a tremendous hassle to create and maintain, or have installation code in your app (which could only install to ~/L/F, unless you expend the time and effort necessary to make your app capable of installing to /L/F with root powers).

Much more common is what Apple calls a “private framework”. You'll bundle this into your application bundle.

Even frameworks intended for general use by any applications (e.g., Sparkle, Growl) are, in practice, built to be used as private frameworks, simply because the “right” way of installing a single copy of the framework to Library/Frameworks is such a hassle.

3
ответ дан 6 December 2019 в 10:51
поделиться

Обычный способ сделать это - сделать так, чтобы ваш проект фреймворка и его клиенты использовали общий каталог сборки. Xcode будет искать заголовки фреймворка и связываться с двоичными файлами фреймворка в папке сборки сначала , а затем в любом другом месте. Таким образом, проект приложения, который компилируется и связывается с заголовком, выбирает последний созданный, а не то, что было установлено.

Затем вы можете удалить cp -r и вместо этого использовать параметр сборки Install Location для размещения вашей сборки product в конечном расположении, используя xcodebuild install DSTROOT = / в командной строке. Но вам нужно будет делать это только тогда, когда вы закончите, а не каждый раз, когда вы перестраиваете фреймворк.

3
ответ дан 6 December 2019 в 10:51
поделиться

Естественно, когда вы распространяете свой фреймворк, он должен быть установлен в / Library / Frameworks; однако мне кажется странным, что вы делаете это с тестовыми / отладочными версиями вашего фреймворка.

Моим первым побуждением было бы установить тестовые версии в ~ / Library, так как это значительно упрощает настройку среды тестирования и отладки. Если возможно, я бы ожидал, что среда отладки / тестирования будет расположена в дереве сборки версии, которую я тестирую, и в этом случае она устанавливается как Private Framework для целей тестирования. Это значительно упростит вашу жизнь, когда придет время иметь дело с несколькими версиями вашего фреймворка.

В конечном счете, не имеет значения, где находится фреймворк, пока ваше приложение или набор тестов загружает правильную версию.

0
ответ дан 6 December 2019 в 10:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: