void Workspace::dev_openIde(const ln::String& target) const { #if defined(_WIN32) if (ln::String::compare(target, u"Android", ln::CaseSensitivity::CaseInsensitive) == 0) { HKEY hKey = NULL; LONG lRet = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Android Studio", NULL, KEY_READ | KEY_WOW64_64KEY, // https://stackoverflow.com/questions/252297/why-is-regopenkeyex-returning-error-code-2-on-vista-64bit &hKey); if (lRet != ERROR_SUCCESS) { LN_LOG_ERROR << u"Android Studio not installed."; return; } DWORD type, size; WCHAR path[MAX_PATH]; RegQueryValueExW(hKey, L"Path", NULL, &type, (LPBYTE)path, &size); ln::Environment::setEnvironmentVariable(u"LUMINO", buildEnvironment()->luminoPackageRootDir()); ln::Process proc; proc.setProgram(ln::Path::combine(ln::String::fromCString(path), u"bin", u"studio")); proc.setArguments({ m_project->androidProjectDir() }); proc.start(); } else { auto files = ln::FileSystem::getFiles(ln::Environment::currentDirectory(), u"*.sln"); if (files.isEmpty()) { CLI::error("Not found *.sln file."); return; } ln::Environment::setEnvironmentVariable(u"LUMINO", buildEnvironment()->luminoPackageRootDir()); ln::Process proc; proc.setProgram(*files.begin()); proc.start(); } #elif defined(__APPLE__) ln::Process proc; proc.setProgram(u"/usr/bin/open"); proc.setArguments({ u"/Applications/Xcode.app/", ln::Path(m_project->macOSProjectDir(), u"LuminoApp.macOS.xcodeproj") }); proc.start(); #else LN_NOTIMPLEMENTED(); // TODO: putenv は書き込み可能なポインタを渡さないとならないみたい? #endif }
int main(int argc, char** argv) { buildEnvironment(); glutInit( &argc, argv ); glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH ); glutInitWindowSize( 600, 600 ); glutInitWindowPosition( 0, 0 ); glutCreateWindow( "2D Beam Tracing" ); glutDisplayFunc( display ); glutReshapeFunc( reshape ); initialization( ); glutMainLoop( ); return 0; }