Сложные сборки в Visual Studio

На самом деле « sys.getsizeof » не подходит для определения размера в numpy. Это просто работает для встроенных объектов Python.

Возвращает размер объекта в байтах. Объект может быть любым типом объекта. Все встроенные объекты будут возвращать правильные результаты, но это не обязательно должно выполняться для сторонних расширений, поскольку это зависит от реализации.

getsizeof () вызывает метод sizeof объекта и добавляет дополнительные издержки сборщика мусора, если объектом управляет сборщик мусора.

Для numpy.ndarray используйте нбайт размером * itemsize

a = np.array([[3,4],[8,0],[9,8],[7,0]])
a.size # 8
a.itemsize # 8
a.nbytes # 64
a = np.array([[3,4],[8,0],[9,8],[7,0]],dtype=np.int32)
a.size # 8
a.itemsize # 4
a.nbytes # 32
7
задан Benoît 4 June 2009 в 18:35
поделиться

5 ответов

  1. Если Вы должны сделать поведение и привыкли к нему, можно создать проекты make-файла Visual Studio и включать их в проект.

  2. Если Вы хотите менее неуклюжий, можно записать макросы Visual Studio и сделанные на заказ события и связать их с определенными обратными вызовами сборки / рычаги.

  3. Можно попробовать что-то как workspacewhiz, который позволит Вам установить переменные среды для своего проекта в формате файла, в котором можно зарегистрироваться. Затем пользователи могут изменить их локально.

5
ответ дан 6 December 2019 в 19:43
поделиться

Я прошел эту точную проблему, и я действительно получал ее работа с помощью Сделанных на заказ Правил.

Но это всегда было болью и работало плохо. Я отказался от Visual Studio и пошел с системой Make-файла с помощью cygwin. Намного лучше теперь.

cl.exe является названием компилятора VS.

Обновление: Я недавно переключился на использование cmake, который идет с его собственными проблемами, и cmake может генерировать решение для Visual Studio. Это, кажется, работает хорошо.

4
ответ дан 6 December 2019 в 19:43
поделиться

Специально для № 3 я использую страницы свойств для обозначения сторонних настроек местоположения библиотеки (включайте пути, пути ссылок, и т.д.). Можно использовать Пользовательские Макросы из родительского или высокоуровневого окна свойств для обозначения начальной точки для самих библиотек (если они находятся в общем корневом месте), и затем определите отдельные листы для каждой библиотеки с помощью основного макроса пути. Это не автоматически, но легко поддержать, и у каждого разработчика может быть различный корневой каталог при необходимости (это находится в нашей среде).

Одна оборотная сторона этого подхода - то, что включать пути создали этот путь, не включены в пути поиска для Visual Studio (если Вы не копируете определения в настройках Projects и Directories для VS). Я говорил с некоторыми людьми MS в PDC08 о получении, это зафиксировало для VS2010 и улучшения интерфейса в целом, но никаких серьезных обещаний от них.

2
ответ дан 6 December 2019 в 19:43
поделиться

(1). Я не знаю простой ответ на это, но существуют обходные решения:

1a. Если содержание сгенерированных файлов не сталкивается (т.е. нет никаких общих статических идентификаторов и т.д.), можно добавить к проекту единственный файл, такой как AllGeneratedFiles.c, и изменить генератор для добавления #include "generated/file.c" в этот файл, когда это производит generated/file.c.

1b. Или можно создать отдельный основанный на make-файле проект для сгенерированных файлов и создать их использующий nmake.

(2). Используйте сделанное на заказ правило вместо события постсборки. Можно добавить сделанное на заказ правило путем щелчка правой кнопкой по названию проекта в Проводнике Решения и выбора Сделанных на заказ Правил.

(3). Нет никакого стандартного способа сделать это; это должно быть определено на основе на проект. Один подход к переменным условий применения для определения местоположения внешних зависимостей. Можно затем использовать те переменные среды в свойствах проекта. Добавьте readme.txt, описывающий требуемые инструменты и библиотеки и соответствующие переменные среды, которые должен установить пользователь, и для любого должно быть достаточно легко настроить.

1
ответ дан 6 December 2019 в 19:43
поделиться

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

1
ответ дан 6 December 2019 в 19:43
поделиться
Другие вопросы по тегам:

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