2015-05-10 143 views
1

我決定使用libsimdpp來對我的C++代碼進行矢量化。問題是,幾乎沒有關於如何入門的文檔。在CMake項目中包含libsimdpp

假設包含的內容很簡單,因爲它也是基於CMake的,就像我正在做的項目一樣,所以我只是試圖複製目錄並設置包含路徑。那麼,事實證明這還不夠:你需要定義合適的標誌來指定你想編譯的SIMD風格。 libsimdpp包含一個CMake宏,它可以創造奇蹟。但我不確定如何從這裏開始,感覺就像我在與CMake一起工作,而不是通過複製東西和刪除東西來實現它。

對CMake有深入瞭解的人是否願意逐步解釋如何做?謝謝!

回答

1

您應該查看編譯libsimdpp測試的simdpp/test/CMakeLists.txt文件。相關部分是這些:

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)添加到可執行文件中。