Создание R Пакеты с помощью Альтернативного GCC

Каждый скрипт PowerShell полностью разбирается до того, как будет выполнен первый оператор в скрипте. Неразрешимый токен имени типа внутри определения класса считается ошибкой синтаксического анализа. Чтобы решить вашу проблему, вам необходимо загрузить свои типы до того, как будет проанализировано определение класса, поэтому определение класса должно быть в отдельном файле. Например:

Main.ps1:

Add-Type -AssemblyName System.Printing
Add-Type -AssemblyName ReachFramework

. $PSScriptRoot\Class.ps1

Class.ps1:

using namespace System.Management
using namespace System.Printing

Class PrinterObject
{
    [string]$Name
    [PrintServer]$Server
    [PrintQueue]$Queue
    [PrintTicket]$Ticket
    [ManagementObject]$Unit
    [bool]$IsDefault
}

Другая возможность была бы вставлять Class.ps1 в виде строки и используйте Invoke-Expression для его выполнения. Это задержит парсинг определения класса до времени, в котором доступны типы.

Add-Type -AssemblyName System.Printing
Add-Type -AssemblyName ReachFramework

Invoke-Expression @‘
    using namespace System.Management
    using namespace System.Printing

    Class PrinterObject
    {
        [string]$Name
        [PrintServer]$Server
        [PrintQueue]$Queue
        [PrintTicket]$Ticket
        [ManagementObject]$Unit
        [bool]$IsDefault
    }
’@
21
задан Ryan R. Rosario 24 October 2009 в 04:44
поделиться

3 ответа

Это не так хорошо задокументировано (например, мне не удалось найти его ни в «Расширении R», ни в «Администраторе R»), но Брайан Рипли упомянул его несколько раз в списках.

Обычно во время компиляции R настройки регистрируются и сохраняются в $ R_HOME / etc / Makeconf . Одна из возможностей - отредактировать этот файл напрямую, но у вас может не быть прав root или вы не хотите влиять на всех других пользователей. Так что, возможно, лучше создать

~/.R/Makevars

с записями

CC=gcc-4.4
CXX=g++-4.4

плюс любые флаги оптимизации и т.д., которые вы хотите установить. Это повлияет на все последующие использования R CMD INSTALL или R CMD check или ... которые вы запускаете.

Другие файлы в $ R_HOME / etc / можно аналогичным образом переопределить локально из ~ / .R / .

36
ответ дан 29 November 2019 в 04:47
поделиться

Взгляд configure.args часть ?install.packages и сравнивает это с ./configure --help на, например, r исходное дерево.

Вы можете также, от удара, CC=clang R CMD INSTALL /path/to/package/source.

HTH

0
ответ дан 29 November 2019 в 04:47
поделиться

Проверьте свой путь, чтобы убедиться, что / usr / local / bin предшествует / usr / bin. Если это так, просто убедитесь, что первым идет / usr / bin:

PATH=/usr/bin:${PATH}

(ничего страшного, если / usr / bin появится дважды).

1
ответ дан 29 November 2019 в 04:47
поделиться
Другие вопросы по тегам:

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