Last active
December 29, 2016 12:26
-
-
Save javoren/3f491141f18c27d73a911b023d938f33 to your computer and use it in GitHub Desktop.
OpenCV for VisualStudio
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ライブラリ名をもとにVisualStudioのDEBUG/RELEASEで自動的に参照ライブラリが切り替わるようなファイルを生成する | |
# たとえばこんなの | |
# #ifdef _DEBUG | |
# #pragma comment(lib, "opencv_core310d.lib") | |
# #else | |
# #pragma comment(lib, "opencv_core310.lib") | |
# #endif | |
# | |
# 実行するにはSet-ExecutionPolicy RemoteSigned でスクリプトを有効化しておくことを忘れずに | |
$VS2015_WORK = $env:OCV2015_ROOT+"\vs2015\WS\10.0\" | |
# ターゲットアーキテクチャとビルドによって切り替わるディレクトリ名 | |
$ARCH_LIST = @( | |
"x64", | |
"x86", | |
"ARM" | |
) | |
$BUILD_LIST = @( | |
"Debug", | |
"Release" | |
) | |
# visual studioで定義済みのプラットフォーム識別マクロ | |
# https://msdn.microsoft.com/ja-jp/library/b0084kay.aspx | |
$VC_MACROS = @{"x64"="_M_X64"; "x86"="_M_IX86"; "ARM"="_M_ARM"} | |
# ライブラリファイルを列挙する | |
function ListupLibrary($OCV_LIBRARY_PATH) | |
{ | |
if( Test-Path $OCV_LIBRARY_PATH ){ | |
$FILE_LIST = ls $OCV_LIBRARY_PATH -name | |
$LIB_LIST = $FILE_LIST -match ".lib$" | |
$LIB_LIST_FULLPATH = $LIB_LIST -replace "^","$OCV_LIBRARY_PATH\" | |
$LIB_LIST_FULLPATH2 = $LIB_LIST_FULLPATH -replace "\\","\\" | |
return @($LIB_LIST_FULLPATH2) | |
}else{ | |
return @() | |
} | |
} | |
# ファイルの内容をいったんクリアしておく | |
$OUTPUT_FILENAME = "opencv_lib.cpp" | |
Write-Output "// genereted powershell script from gen_opencl_linkheader.ps1" | Set-Content -Encoding Default $OUTPUT_FILENAME | |
Write-Output "#include `"pch.h`"" | Add-Content $OUTPUT_FILENAME -Encoding Default | |
foreach($ARCH in $ARCH_LIST){ | |
foreach($BUILD in $BUILD_LIST){ | |
$DIR_BASE = $VS2015_WORK + $ARCH | |
$LIB_DIR = $DIR_BASE + "\lib\" + $BUILD | |
# 全てのアーキテクチャとビルドのライブラリを列挙 | |
$LIB_LIST = ListupLibrary($LIB_DIR) | |
# debugとreleaseでリンクするライブラリを切り替える | |
$ARCH_MACRO_NAME = $VC_MACROS[$ARCH] | |
if($BUILD -eq "Debug"){ | |
Write-Output "#ifdef _DEBUG" | Add-Content $OUTPUT_FILENAME -Encoding Default | |
}else{ | |
Write-Output "#ifndef _DEBUG" | Add-Content $OUTPUT_FILENAME -Encoding Default | |
} | |
# アーキテクチャごとにリンクするライブラリを切り替える | |
Write-Output "#ifdef $ARCH_MACRO_NAME" | Add-Content $OUTPUT_FILENAME -Encoding Default | |
# 列挙されたライブラリを取り込むようなソースコードを定義する | |
foreach($LIB_NAME in $LIB_LIST){ | |
Write-Output "#pragma comment(lib, `"$LIB_NAME`" )" | Add-Content $OUTPUT_FILENAME -Encoding Default | |
} | |
Write-Output ("#endif // end ifdef" + $ARCH_MACRO_NAME) | Add-Content $OUTPUT_FILENAME -Encoding Default | |
Write-Output ("#endif // end ifdef _DEBUG ") | Add-Content $OUTPUT_FILENAME -Encoding Default | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment