This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/share/CodeBlocks/templates/wizard/opencv/wizard.script

223 lines
9.1 KiB
Plaintext

////////////////////////////////////////////////////////////////////////////////
//
// OpenCV project wizard
//
////////////////////////////////////////////////////////////////////////////////
// globals (Windows platform only)
// This is the value string/macro be set as the initial value
// for the AddGenericSelectPathPage page when selecting the OpenCV root folder
OpenCVPathDefault <- _T("$(#cv)");
OpenCVPath <- _T("");
// default paths
OpenCVPathDefaultInc <- _T("$(#cv.include)");
OpenCVPathDefaultLib <- _T("$(#cv.lib)");
OpenCVPathDefaultBin <- _T("$(#cv.bin)");
// If there are already saved in configure file, read them, otherwise, use default values
OpenCVPathInc <- GetConfigManager().Read(_T("/opencv_project_wizard/options/inc"), OpenCVPathDefaultInc);
OpenCVPathLib <- GetConfigManager().Read(_T("/opencv_project_wizard/options/lib"), OpenCVPathDefaultLib);
OpenCVPathBin <- GetConfigManager().Read(_T("/opencv_project_wizard/options/bin"), OpenCVPathDefaultBin);
// OpenCV version
MajorVersion <- GetConfigManager().Read(_T("/opencv_project_wizard/versions/major"), 2);
MinorVersion <- GetConfigManager().Read(_T("/opencv_project_wizard/versions/minor"), 4);
RevisionVersion <- GetConfigManager().Read(_T("/opencv_project_wizard/versions/revision"), 4);
//For OpenCV 2.4.4, this string is "244"
VersionString <- _T("")
function BeginWizard()
{
local intro_msg = _T("Welcome to the new OpenCV project wizard!\n\n" +
"This wizard will guide you to create a new project\n" +
"using the OpenCV C++ library.\n\n" +
"When you 're ready to proceed, please click \"Next\"...");
local opencv_path_descr = _T("Please select the location of OpenCV library on your computer.\n" +
"This is the top-level folder where OpenCV was installed (unpacked).\n" +
"To help you, this folder must contain the subfolders\n" +
"\"include\" and \"lib\".");
Wizard.AddInfoPage(_T("OpenCVIntro"), intro_msg);
// select the directory where you place the new project files
Wizard.AddProjectPathPage();
// Note, here OpenCVPathDefault is just "$(#cv)"
// Get the values (major, minor, and revision number), and construct a version string
if (PLATFORM == PLATFORM_MSW)
{
Wizard.AddGenericSelectPathPage(_T("OpenCVPath"), opencv_path_descr, _T("Please select OpenCV's location:"), OpenCVPathDefault);
Wizard.AddPage(_T("VersionSelection"));
}
// default setting for debug/release options
Wizard.AddCompilerPage(_T(""), _T("*"), true, true);
}
////////////////////////////////////////////////////////////////////////////////
// OpenCV's path page
////////////////////////////////////////////////////////////////////////////////
function OnLeave_OpenCVPath(fwd)
{
if (fwd)
{
// txtFolder is the text control in GenericSelectPathPage
local dir = Wizard.GetTextControlValue(_T("txtFolder"));
local dir_nomacro = VerifyDirectory(dir); //expand macros
if (dir_nomacro.IsEmpty())
return false;
OpenCVPath = dir; // Remember the original selection.
LogDebug(dir);
LogDebug(dir_nomacro);
}
return true;
}
// Select the OpenCV version, because different OpenCV have different library names
function OnEnter_VersionSelection(forward)
{
// we only care to initialize if going forward
if (forward)
{
if (PLATFORM == PLATFORM_MSW)
{
Wizard.SetSpinControlValue(_T("ID_SPINCTRL1"), MajorVersion);
Wizard.SetSpinControlValue(_T("ID_SPINCTRL2"), MinorVersion);
Wizard.SetSpinControlValue(_T("ID_SPINCTRL3"), RevisionVersion);
Wizard.SetTextControlValue(_T("ID_TEXTCTRL1"), OpenCVPathInc);
Wizard.SetTextControlValue(_T("ID_TEXTCTRL2"), OpenCVPathLib);
Wizard.SetTextControlValue(_T("ID_TEXTCTRL3"), OpenCVPathBin);
}
}
return true;
}
function OnLeave_VersionSelection(fwd)
{
if (fwd)
{
local Major = Wizard.GetSpinControlValue(_T("ID_SPINCTRL1"));
local Minor = Wizard.GetSpinControlValue(_T("ID_SPINCTRL2"));
local Revision = Wizard.GetSpinControlValue(_T("ID_SPINCTRL3"));
VersionString = _T(""); // set to empty string, then append three version numbers
VersionString += Major;
VersionString += Minor;
VersionString += Revision;
OpenCVPathInc = Wizard.GetTextControlValue(_T("ID_TEXTCTRL1"));
OpenCVPathLib = Wizard.GetTextControlValue(_T("ID_TEXTCTRL2"));
OpenCVPathBin = Wizard.GetTextControlValue(_T("ID_TEXTCTRL3"));
// check whether include file exist
local inc_nomacro = ReplaceMacros(OpenCVPathInc, true);
local test_inc_file = inc_nomacro + _T("\\opencv2\\opencv.hpp");
if (!IO.FileExists(test_inc_file))
{
ShowError(_T("The include path you entered seems invalid: File ")
+ test_inc_file + _T(" not found"));
return false;
}
// check whether lib file exist
local lib_nomacro = ReplaceMacros(OpenCVPathLib, true);
// first we check whether a release OpenCV library exists, which could have the name libopencv_core244.dll.a
// if we can't find a release version of OpenCV library, check a debug version exists, which
// may have the name libopencv_core244d.dll.a
local test_release_lib_file = lib_nomacro + _T("\\libopencv_core") + VersionString + _T(".dll.a");
local test_debug_lib_file = lib_nomacro + _T("\\libopencv_core") + VersionString + _T("d.dll.a");
if (IO.FileExists(test_release_lib_file))
{
; // find release version of OpenCV library
}
else if (IO.FileExists(test_debug_lib_file))
{
VersionString = VersionString + _T("d"); //find debug version of OpenCV library
}
else
{
ShowError(_T("The lib path you entered seems invalid: File ")
+ test_release_lib_file + _T(" or ") + test_debug_lib_file + _T(" not found"));
return false;
}
// save them in the configure file
GetConfigManager().Write(_T("/opencv_project_wizard/options/inc"), OpenCVPathInc);
GetConfigManager().Write(_T("/opencv_project_wizard/options/lib"), OpenCVPathLib);
GetConfigManager().Write(_T("/opencv_project_wizard/options/bin"), OpenCVPathBin);
GetConfigManager().Write(_T("/opencv_project_wizard/versions/major"), Major);
GetConfigManager().Write(_T("/opencv_project_wizard/versions/minor"), Minor);
GetConfigManager().Write(_T("/opencv_project_wizard/versions/revision"), Revision);
}
return true;
}
// return the files this project contains
function GetFilesDir()
{
return _T("opencv/files");
}
// setup the already created project
function SetupProject(project)
{
if (PLATFORM == PLATFORM_MSW)
{
// set project options
project.AddIncludeDir(OpenCVPathInc);
project.AddLibDir(OpenCVPathLib);
// This folder contains Dll files, when C::B start an App, it will
// automatically add the LibDir to PATH variable, so those Dll files
// can be find by the App.
project.AddLibDir(OpenCVPathBin);
project.SetVar(_T("CV_VERSION"), VersionString, false);
// add link libraries (basically, three libraries)
// For example, "opencv_core244.dll"
local prefix = _T("opencv_")
project.AddLinkLib(prefix + _T("imgproc") + _T("$(CV_VERSION).dll"));
project.AddLinkLib(prefix + _T("core") + _T("$(CV_VERSION).dll"));
project.AddLinkLib(prefix + _T("highgui") + _T("$(CV_VERSION).dll"));
}
else // PLATFORM != PLATFORM_MSW
{
// opencv-config based: things are ultra-simple :)
project.AddCompilerOption(_T("`opencv-config --cxxflags`"));
project.AddLinkerOption(_T("`opencv-config --ldstaticflags`"));
}
// Debug
local target = project.GetBuildTarget(Wizard.GetDebugName());
if (!IsNull(target))
{
target.SetTargetType(ttConsoleOnly); // ttConsoleOnly: console for debugging
target.SetOutputFilename(Wizard.GetDebugOutputDir() + Wizard.GetProjectName() + DOT_EXT_EXECUTABLE);
if (Wizard.GetCompilerID().Matches(_T("gcc")))
{
// enable generation of debugging symbols for target
// Note: DebugSymbolsOn() won't work because -Wall produces far too many warnings
target.AddCompilerOption(_T("-g"));
}
}
// Release
target = project.GetBuildTarget(Wizard.GetReleaseName());
if (!IsNull(target))
{
target.SetTargetType(ttExecutable); // ttExecutable: no console
target.SetOutputFilename(Wizard.GetReleaseOutputDir() + Wizard.GetProjectName() + DOT_EXT_EXECUTABLE);
if (Wizard.GetCompilerID().Matches(_T("gcc")))
{
// enable optimizations for target.
// Note: OptimizationsOn() won't work because of -I-!
target.AddCompilerOption(_T("-O2"));
target.AddCompilerOption(_T("-s"));
}
}
return true;
}