Linux에서 Freeglut으로 Codeblocks 설정
13149 단어 opengllinuxcodeblocksfreeglut
This setup is tested and working on Pop os, as of writing, should be working with Ubuntu/Debian with the latest Codeblocks.
또한 내가 수집한 게시물에 연결하고 Codeblocks가 제대로 작동하도록 설정했습니다.
설치 부분
물론 이 모든 것을 사용하려면 필요한 모든 파일을 설치해야 합니다.
Freeglut의 경우:
sudo apt install g++ freeglut3 freeglut3-dev
sudo apt install libxmu-dev libxi-dev
Codeblock의 경우:
sudo apt install codeblocks
OpenGL의 경우:
sudo apt install build-essential libgl1-mesa-dev
sudo apt install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev # some libraries
OpenGL 설치 확인:
glxinfo | grep OpenGL
설정 부분
Codeblocks를 열고 settings > Global Variables
로 이동합니다.new
를 클릭하면 다음과 같이 표시됩니다.
freeglut
를 입력하고 확인을 누르고 나머지는 다음과 같이 설정합니다.
이제 Codeblocks를 닫습니다.
나머지 부분은 here에서 수집됩니다.
sudo apt install g++ freeglut3 freeglut3-dev
sudo apt install libxmu-dev libxi-dev
sudo apt install codeblocks
sudo apt install build-essential libgl1-mesa-dev
sudo apt install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev # some libraries
glxinfo | grep OpenGL
Codeblocks를 열고
settings > Global Variables
로 이동합니다.new
를 클릭하면 다음과 같이 표시됩니다.freeglut
를 입력하고 확인을 누르고 나머지는 다음과 같이 설정합니다.이제 Codeblocks를 닫습니다.
나머지 부분은 here에서 수집됩니다.
/usr/share/codeblocks/templates
로 이동하여 freeglut.cbp
파일을 만들고 다음 코드를 입력합니다.<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="4" />
<Project>
<Option title="freeglut" />
<Option pch_mode="0" />
<Option compiler="gcc" />
<Build>
<Target title="default">
<Option output="freeglut.exe" />
<Option type="0" />
<Option compiler="gcc" />
<Option includeInTargetAll="1" />
</Target>
</Build>
<Compiler>
<Add directory="$(#freeglut.include)" />
</Compiler>
<Linker>
<Add library="freeglut" />
<Add library="glu32" />
<Add library="opengl32" />
<Add library="winmm" />
<Add library="gdi32" />
<Add library="user32" />
<Add library="kernel32" />
<Add directory="$(#freeglut.lib)" />
</Linker>
<Unit filename="main.cpp">
<Option compilerVar="CPP" />
<Option target="default" />
</Unit>
</Project>
</CodeBlocks_project_file>
저장해.
/usr/share/codeblocks/templates/wizard/
에 freeglut이라는 디렉토리를 만듭니다. 거기에서 glut라는 다른 디렉토리를 찾을 수 있습니다. 모든 내용을 복사하여 새로 생성된 freeglut 디렉토리에 붙여넣습니다. wizard.script
파일을 편집하고 다음을 붙여넣습니다.////////////////////////////////////////////////////////////////////////////////
//
// FreeGLUT project wizard
//
////////////////////////////////////////////////////////////////////////////////
// globals
FreeGlutPathDefault <- _T("$(#freeglut)");
FreeGlutPathDefaultInc <- _T("$(#freeglut.include)");
FreeGlutPathDefaultLib <- _T("$(#freeglut.lib)");
FreeGlutPath <- _T("");
function BeginWizard()
{
local intro_msg = _T("Welcome to the new FreeGLUT project wizard!\n\n" +
"This wizard will guide you to create a new project\n" +
"using the FreeGLUT OpenGL extensions.\n\n" +
"When you 're ready to proceed, please click \"Next\"...");
local glutpath_descr = _T("Please select the location of FreeGLUT on your computer.\n" +
"This is the top-level folder where FreeGLUT was installed (unpacked).\n" +
"To help you, this folder must contain the subfolders\n" +
"\"include\" and \"lib\".");
Wizard.AddInfoPage(_T("GlutIntro"), intro_msg);
Wizard.AddProjectPathPage();
if (PLATFORM == PLATFORM_MAC)
{
FreeGlutPathDefault="/System/Library/Frameworks/FreeGLUT.framework";
}
else
Wizard.AddGenericSelectPathPage(_T("FreeGlutPath"), glutpath_descr, _T("Please select FreeGLUT's location:"), FreeGlutPathDefault);
Wizard.AddCompilerPage(_T(""), _T("*"), true, true);
}
////////////////////////////////////////////////////////////////////////////////
// GLUT's path page
////////////////////////////////////////////////////////////////////////////////
function OnLeave_GlutPath(fwd)
{
if (fwd)
{
local dir = Wizard.GetTextControlValue(_T("txtFolder")); // txtFolder is the text control in GenericSelectPathPage
local dir_nomacro = VerifyDirectory(dir);
if (dir_nomacro.IsEmpty())
return false;
// verify include dependencies
local dir_nomacro_inc = GetCompilerIncludeDir(dir, FreeGlutPathDefault, FreeGlutPathDefaultInc);
if (dir_nomacro_inc.IsEmpty())
return false;
if (!VerifyFile(dir_nomacro_inc + wxFILE_SEP_PATH + _T("GL"), _T("freeglut.h"), _T("FreeGLUT's include"))) return false;
// verify library dependencies
local dir_nomacro_lib = GetCompilerLibDir(dir, FreeGlutPathDefault, FreeGlutPathDefaultLib);
if (dir_nomacro_lib.IsEmpty())
return false;
if (PLATFORM == PLATFORM_MSW)
{
if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("FreeGLUT's"))) return false;
}
else
{
if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("FreeGLUT's"))) return false;
}
FreeGlutPath = dir; // Remember the original selection.
local is_macro = _T("");
// try to resolve the include directory as macro
is_macro = GetCompilerIncludeMacro(dir, FreeGlutPathDefault, FreeGlutPathDefaultInc);
if (is_macro.IsEmpty())
{
// not possible -> use the real inc path we had computed instead
FreeGlutPathDefaultInc = dir_nomacro_inc;
}
// try to resolve the library directory as macro
is_macro = GetCompilerLibMacro(dir, FreeGlutPathDefault, FreeGlutPathDefaultLib);
if (is_macro.IsEmpty())
{
// not possible -> use the real lib path we had computed instead
FreeGlutPathDefaultLib = dir_nomacro_lib;
}
}
return true;
}
// return the files this project contains
function GetFilesDir()
{
return _T("glut/files");
}
// setup the already created project
function SetupProject(project)
{
// set project options
if (PLATFORM != PLATFORM_MAC)
{
project.AddIncludeDir(FreeGlutPathDefaultInc);
project.AddLibDir(FreeGlutPathDefaultLib);
}
// add link libraries
if (PLATFORM == PLATFORM_MSW)
{
project.AddLinkLib(_T("freeglut"));
project.AddLinkLib(_T("opengl32"));
project.AddLinkLib(_T("glu32"));
project.AddLinkLib(_T("winmm"));
project.AddLinkLib(_T("gdi32"));
}
else if (PLATFORM == PLATFORM_MAC)
{
project.AddLinkerOption(_T("-framework GLUT"));
project.AddLinkerOption(_T("-framework OpenGL"));
project.AddLinkerOption(_T("-framework Cocoa")); // GLUT dependency
}
else
{
project.AddLinkLib(_T("glut"));
project.AddLinkLib(_T("GL"));
project.AddLinkLib(_T("GLU"));
project.AddLinkLib(_T("Xxf86vm"));
}
// enable compiler warnings (project-wide)
WarningsOn(project, Wizard.GetCompilerID());
// 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);
target.SetWorkingDir(FreeGlutPath + _T("/bin"));
// enable generation of debugging symbols for target
DebugSymbolsOn(target, Wizard.GetCompilerID());
}
// Release
target = project.GetBuildTarget(Wizard.GetReleaseName());
if (!IsNull(target))
{
target.SetTargetType(ttExecutable); // ttExecutable: no console
target.SetOutputFilename(Wizard.GetReleaseOutputDir() + Wizard.GetProjectName() + DOT_EXT_EXECUTABLE);
target.SetWorkingDir(FreeGlutPath + _T("/bin"));
// enable optimizations for target
OptimizationsOn(target, Wizard.GetCompilerID());
}
return true;
}
저장해.
/usr/share/codeblocks/templates/wizard
디렉토리에 config.script
라는 스크립트가 있고 파일 끝에 다음 줄을 추가합니다.RegisterWizard(wizProject, _T("freeglut"), _T("FreeGLUT project"), _T("2D/3D Graphics"));
/usr/share/codeblocks/templates/wizard/freeglut
디렉토리에 붙여넣습니다. 작성 당시에는 다음과 같이 표시됩니다. Codeblocks 설정 부분
모든 것이 잘/올바르게 진행되면 Codeblocks는 경고/오류 표시 없이 열려 있어야 합니다.
File > New > Projects
로 이동하면 다음 대화 상자가 Freeglut 프로젝트와 함께 표시되어야 합니다. 이 시점에서 Codeblocks는 Freeglut 프로젝트를 위해 준비되어야 합니다.
마지막 부분
일이 잘 되는지 안 되는지 확인만 하면 됩니다.
main.cpp
파일이 있어야 합니다. 그게 다야.
좋아, 그게 다야. 희망, 모든 것이 잘 작동합니다.
나중에 보자!
Reference
이 문제에 관하여(Linux에서 Freeglut으로 Codeblocks 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dhar01/setting-up-codeblocks-with-freeglut-in-linux-9if텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)