Сборка UHD с CMake для Windows XP(32-разрядная версия)

Добрый день.

Пожалуйста, объясните подробно процесс сборки UHD с CMake для Windows XP. Я следую инструкциям разработчика, но они очень короткие, и я впервые работал с CMake. Я скачал и установил все необходимые компоненты: CMake, Boost, Python с Cheetah и Doxygen. Все эти компоненты установлены на диске C:\ для простоты. Я запустил CMake (для компилятора MSVC 2010) и получил вывод о попытке сборки:

The CXX compiler identification is MSVC 16.0.30319.1
Check for working CXX compiler using: Visual Studio 10 2010
Check for working CXX compiler using: Visual Studio 10 2010 -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done

Configuring the python interpreter...
Found PythonInterp: C:/Python27/python.exe (found version "2.7.8") 
Python interpreter: C:/Python27/python.exe
Override with: -DPYTHON_EXECUTABLE=<path-to-python>
The C compiler identification is MSVC 16.0.30319.1
Check for working C compiler using: Visual Studio 10 2010
Check for working C compiler using: Visual Studio 10 2010 -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check size of void*[8]
Check size of void*[8] - done
Build type not specified: defaulting to release.

Configuring Boost C++ Libraries...
Could NOT find Boost
Boost include directories: Boost_INCLUDE_DIR-NOTFOUND
Boost library directories: 
Boost libraries: 

Python checking for Python version 2.6 or greater
Python checking for Python version 2.6 or greater - found

Python checking for Cheetah templates 2.0.0 or greater
Python checking for Cheetah templates 2.0.0 or greater - found

Configuring LibUHD support...
Dependency Boost_FOUND = 0
Dependency HAVE_PYTHON_PLAT_MIN_VERSION = TRUE
Dependency HAVE_PYTHON_MODULE_CHEETAH = TRUE
Disabling LibUHD support.
Override with -DENABLE_LIBUHD=ON/OFF

Configuring Examples support...
Dependency ENABLE_LIBUHD = OFF
Disabling Examples support.
Override with -DENABLE_EXAMPLES=ON/OFF

Configuring Utils support...
Dependency ENABLE_LIBUHD = OFF
Disabling Utils support.
Override with -DENABLE_UTILS=ON/OFF

Configuring Tests support...
Dependency ENABLE_LIBUHD = OFF
Disabling Tests support.
Override with -DENABLE_TESTS=ON/OFF
Found Doxygen: C:/Program Files/doxygen/bin/doxygen.exe (found version "1.8.7") 


Configuring Manual support...
Dependency DOXYGEN_FOUND = YES
Enabling Manual support.
Override with -DENABLE_MANUAL=ON/OFF


Configuring API/Doxygen support...
Dependency DOXYGEN_FOUND = YES
Enabling API/Doxygen support.
Override with -DENABLE_DOXYGEN=ON/OFF


Could NOT find GZip (missing:  GZIP_EXECUTABLE) 

Configuring Man Pages support...
Dependency GZIP_FOUND = FALSE
Dependency NOT_WIN32 = 
Disabling Man Pages support.
Override with -DENABLE_MAN_PAGES=ON/OFF

######################################################
# UHD enabled components                              
######################################################
* Manual
* API/Doxygen

######################################################
# UHD disabled components                             
######################################################
* LibUHD
* Examples
* Utils
* Tests
* Man Pages

Building version: 003.007.002-0-unknown
Using install prefix: C:/Program Files/UHD
Compatible images can be downloaded from: http://files.ettus.com/binaries/master_images/archive/uhd-images_003.007.002-48-g403e539d.zip
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
Boost_INCLUDE_DIR (ADVANCED)
used as include directory in directory C:/uhd/host
used as include directory in directory C:/uhd/host/docs

Configuring incomplete, errors occurred!
See also "C:/uhd/host/build/CMakeFiles/CMakeOutput.log".

Меня особенно интересовало, почему бы не найти буст (укажите, какую папку в переменную Boost_DIR??), как включить LIBUHD(Я пытался вручную создать переменную ENABLE_LIBUHD типа BOOL и присвойте ему значение 1 - но ничего не изменится).

Все очень непонятно, пожалуйста, максимально подробно.

СПАСИБО!

2 ответа

Решение

Вы хотите попасть в список рассылки usrp-users.

Мне удалось потерять свою сборку и потерять формулу, поэтому мне пришлось ее воспроизвести. Теперь я решил, что пройдя этот процесс, я улучшу формулу, которую я разместил здесь:

1) Git source - git clone git://github.com/EttusResearch/uhd.git Я сделал GIT в c:\ettus_b210\uhd_build, который создает каталог "uhd"

2) Установите boost http://sourceforge.net/projects/boost/files/boost-binaries/ я использовал 1_55_0. Этот дистрибутив будет установлен в c:\local\boost_1_55_0. Выберите сборку для вашей среды сборки - я использую Windows 32-bit VS2010.

3) Установите libusb. http://sourceforge.net/projects/libusbx/files/releases/1.0.18/binaries/ Упомянутый здесь "libusbx" был включен в libusb с этим выпуском. У меня установлен мой в C: \ libusbx \libusbx-1.0.18-win

4) Установите Python и инструменты Python, указанные

Загрузите и установите двоичные файлы Python (минимум 2.6.x). Я рекомендую Python 2.7, который поставляется с простым скриптом установки, который поможет вам получить гепарда. (если у вас установлен MATLAB, то, вероятно, у вас есть Python2.7) https://www.python.org/download/

Установите Cheetah. Сначала установите Python Setup Tools. https://pypi.python.org/pypi/setuptools Откройте окно cmd и запустите его. После загрузки и извлечения пакета в окне cmd запустите easy_install cheetah.

ПРОВЕРЬТЕ, какая версия Python вызывается.

Самый простой способ - установить Python27, а затем с помощью скрипта easy_install установить Cheetah.

Если выполнение команды ниже в окнах cmd показывает что-то отличное от python 2.7, измените записи реестра (локальный компьютер и ROOT). В командной строке Windows запустите:

ftype|find /I "python"

Вы должны получить что-то вроде:

Python.CompiledFile="C:\Python27\python.exe" "%1" %*
Python.File="C:\Python27\python.exe" "%1" %*
Python.NoConFile="C:\Python27\pythonw.exe" "%1" %*

Также убедитесь, что эти записи имеют правильную версию, показанную в записях ниже:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe 

5) Установите cmake - я использовал 3.0.0, но все, что ниже 2.8.0, должно работать.

В диалоге CMake:

  • Укажите источник c:\ettus_b210\uhd_build\uhd
  • Каталог для сборки c:\ettus_b210\uhd_build\uhd\build

    ПРИМЕЧАНИЕ: это ваш выбор, где вы хотите что-то собирать - он не будет собираться в исходных каталогах

  • Включить расширенный вид

  • BOOST_ALL_DYN_LINK [X]
  • Boost_DEBUG = True

    ПРИМЕЧАНИЕ: на этом флаге важен регистр

  • BOOST_INCLUDE_DIR= C: \ Local \ boost_1_55_0

    ПРИМЕЧАНИЕ: это каталог, который содержит каталог "boost", то есть, как включены заголовки boost

  • BOOST_LIBRARYDIR= C: \ Local\boost_1_55_0\lib32-MSVC-10,0

    ПРИМЕЧАНИЕ. Я использую VS2010, и это библиотека для этой среды сборки.

  • LIBUSB_INCLUDE_DIRS = C: \ libusbx \libusbx-1.0.18 выигрыша \ включают \libusbx-1,0

  • LIBUSB_LIBRARIES = C: \ libusbx \libusbx-1.0.18-победа \MS32\ DLL \ libusb-1.0.lib

    ПРИМЕЧАНИЕ: это файл.lib в подкаталоге DLL - они хотят, чтобы сама библиотека не содержала каталог

  • CMAKE_INSTALL_PREFIX= C:/ettus_b210/ установки

    ПРИМЕЧАНИЕ: по умолчанию он встроен в "C:\Program Files (x86)\UHD", который перезаписывает загруженные рабочие двоичные файлы. Я не хочу этого делать.

  • Я отключил компоненты драйвера, которые не нужны для B2x0, но сборка со всем этим также работает.

  • [Настроить] и [Создать] Не должно быть никаких ошибок.

    ПРИМЕЧАНИЕ: вы увидите "Boost_DIR-NOTFOUND"... эта установка буста не включает в себя файл.cmake, поэтому отсутствие этого файла.cmake - вот о чем говорит winge. Boost_DEBUG вызовет сброс среды BOOST в окне.

    ПРИМЕЧАНИЕ: убедитесь, что LIBUSB_FOUND = TRUE в окне журнала. Кажется, что LIBUSB "скользкий" и по какой-то причине выпал из конфига. Это может быть небольшая проблема с cmake 3.0.0. Снова проверьте переменные LIBUSB_* и конфигурируйте / генерируйте, пока все не заработает.

Откройте VS2010, откройте файл "Solution" UHD.sln, и появится множество исполняемых файлов. [Сборка][Решение] - через 10 минут все должно быть построено.

Выберите INSTALL [Build][Build INSTALL] поместит двоичные файлы в каталог, обозначенный как CMAKE_INSTALL_PREFIX.

Если вы установили двоичные файлы и образы, то

Если вы изменяете один из примеров в соответствии со своими потребностями, просто добавьте этот файл в файл CMakeLists.txt в каталоге примеров:

SET(example_sources
    benchmark_rate.cpp
    network_relay.cpp
    rx_multi_samples.cpp
    rx_samples_to_file.cpp
    rx_samples_thread_to_file.cpp
    rx_samples_to_udp.cpp
    rx_timed_samples.cpp
    test_dboard_coercion.cpp
    test_messages.cpp
    test_pps_input.cpp
    test_timed_commands.cpp
    transport_hammer.cpp
    tx_bursts.cpp
    tx_samples_from_file.cpp
    tx_timed_samples.cpp
    tx_waveforms.cpp
    txrx_loopback_to_file.cpp
    latency_test.cpp
    fpgpio.cpp
)

CMake [Configure][Generate] повторно создает дерево решений. VS2010 [Build][Solution] создаст новую запись в списке проектов.

В Cmake есть удобные "показанные изменения", так что я изменил базовый уровень UHD в качестве окончательной документации:

Параметры командной строки:

-DCMAKE_INSTALL_PREFIX:PATH="C:/ettus_b210/uhd_build/uhd/install" -DBoost_DATE_TIME_LIBRARY_DEBUG:FILEPATH="Boost_DATE_TIME_LIBRARY_DEBUG-NOTFOUND" -DLIBUSB_INCLUDE_DIRS:PATH="C:/libusbx/libusbx-1.0.18-win/include/libusbx-1.0" -DENABLE_USRP1:BOOL="0" -DENABLE_B100:BOOL="0" -DBoost_DIR:PATH="Boost_DIR-NOTFOUND" -DBOOST_INCLUDEDIR:PATH="C:/local/boost_1_55_0" -DLIBUSB_LIBRARIES:FILEPATH="C:/libusbx/libusbx-1.0.18-win/MS32/dll/libusb-1.0.lib" -DBoost_LIBRARY_DIR:PATH="C:/local/boost_1_55_0/lib32-msvc-10.0" -DBOOST_ALL_DYN_LINK:BOOL="1" -DBoost_DEBUG:BOOL="1" -DBoost_INCLUDE_DIR:PATH="C:/local/boost_1_55_0/boost" -DCMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING="/debug /INCREMENTAL"
Cache file:
CMAKE_INSTALL_PREFIX:PATH=C:/ettus_b210/uhd_build/uhd/install
Boost_DATE_TIME_LIBRARY_DEBUG:FILEPATH=Boost_DATE_TIME_LIBRARY_DEBUG-NOTFOUND
LIBUSB_INCLUDE_DIRS:PATH=C:/libusbx/libusbx-1.0.18-win/include/libusbx-1.0
ENABLE_USRP1:BOOL=0
ENABLE_B100:BOOL=0
Boost_DIR:PATH=Boost_DIR-NOTFOUND
BOOST_INCLUDEDIR:PATH=C:/local/boost_1_55_0
LIBUSB_LIBRARIES:FILEPATH=C:/libusbx/libusbx-1.0.18-win/MS32/dll/libusb-1.0.lib
Boost_LIBRARY_DIR:PATH=C:/local/boost_1_55_0/lib32-msvc-10.0
BOOST_ALL_DYN_LINK:BOOL=1
Boost_DEBUG:BOOL=1
Boost_INCLUDE_DIR:PATH=C:/local/boost_1_55_0/boost
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL

Просто дополнение к вышеупомянутому для всех людей, имеющих проблемы со сборкой двоичного установщика с помощью NSIS (я скопировал вышеупомянутые пути для лучшего понимания): если сборка завершается с ошибкой "! Macro: макрос с именем"RemoveSection"уже существует / найден" просто отредактируйте файл проекта NSIS в каталоге c:/ettus_b210/uhd_build/uhd/build_CPack_Packages/win32/NSIS. Найдите "RemoveSection" и замените каждую запись на "RemoveSection_CPack". После изменения файла проекта NSIS просто щелкните правой кнопкой мыши файл проекта NSIS и выберите "Скомпилировать сценарий NSIS". NSIS открывается и собирает бинарный установщик.

Это должно работать как минимум до NSIS 3.02.1.

Другие вопросы по тегам