GPU サポートを使用して OpenCV 245 をコンパイルするのは非常に困難です。いくつかの努力で、cudaサポートを稼働させることができましたが、今はopenclで立ち往生しています。ここに問題があります:
コンパイル中のある時点で、すべてのカーネル関数を文字列として含むファイル kernels.cpp が生成されます。私の理解では、それらは cl2cpp.cmake スクリプトを使用して .cl ファイルから自動的に変換されます。
私が理解していないのは、1 つのファイルがビルドから除外されていることです: nonfree_surf.cl (他のすべての .cl ファイルと一緒に私のディスクにあります) は、Visual Studio プロジェクトまたは kernels.cpp のいずれにも含まれていません。自動的に生成されます。これにより、リンク時に未定義のエラーが発生します。
nonfree_surf.cl を Visual Studio プロジェクトに手動で追加しようとしました。これは何も変わりません。ocl モジュールの CMakeLists.txt では、すべての cl ファイルが次の行で自動的に追加されるようです。
file(GLOB CL_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/kernels/*.cl")
nonfree_surf を CL_FILES に手動で追加しようとしましたが、効果はありませんでした。
私はCMakeの知識がほとんどないため、何が起こっているのかよくわかりません。誰かがこの動作の理由を見つける方法の手がかりを教えてくれますか?
nonfree_surf.cl を除くすべての .cl ファイルが VS プロジェクトに追加されるのはなぜですか?
どうすればこれを修正できますか?
cl2cpp.cmake スクリプトを手動で実行できますか? もしそうなら、どのように?