2015-05-10 3 views
1

Я решил использовать libsimdpp для векторизации моего кода на C++. Проблема в том, что рядом нет документации о том, как начать работу.Включая libsimdpp в проект CMake

Предполагаемое включение было бы простым, учитывая, что это также CMake, как проект, который я делаю, поэтому я просто попытался скопировать каталог и установить путь включения. Ну, оказывается, этого недостаточно: вам нужно определить соответствующие флажки, чтобы указать, какой SIMD-вкус вы хотите скомпилировать. libsimdpp включает макрос CMake только для этого, и он творит чудеса. Я не уверен, как это сделать, и мне кажется, что я работаю против CMake, а не с ним, копируя вещи и удаляя вещи.

Может ли кто-нибудь с твердым пониманием CMake объяснить, что делать поэтапно? Благодаря!

ответ

1

Вы должны проверить файл simdpp/test/CMakeLists.txt, где скомпилированы тесты libsimdpp. Соответствующие части таковы:

foreach(SRC ${TEST1_ARCH_SOURCES}) 
    simdpp_multiarch(TEST1_ARCH_GEN_SOURCES ${SRC} ${COMPILABLE_ARCHS}) 
endforeach() 

add_executable(test1 EXCLUDE_FROM_ALL 
    ${TEST1_SOURCES} 
    ${TEST1_ARCH_GEN_SOURCES} 
) 

В основном, TEST1_ARCH_SOURCES содержит код, который использует libsimdpp. simdpp_multiarch копирует источники вокруг и устанавливает для них соответствующие флаги компиляции, так что реализации для, например, SSE2 и AVX2 могут быть связаны в один и тот же исполняемый файл. Затем эти сгенерированные источники (TEST1_ARCH_GEN_SOURCES) добавляются в исполняемый файл.

Смежные вопросы