// TODO!!!!! // create the install_libname.bat installation batch file: void gen_vc_install_bat(const Project &project, const Workspace &workspace) { std::string bat_file = "Sources\\install_"; bat_file += project.libname; bat_file += ".bat"; std::ofstream bat(bat_file.c_str()); std::string instdir = workspace.output_include_dir; instdir += "\\ClanLib"; install_mkdir(bat, "API\\", instdir, &project); install_copydir(bat, "API\\", instdir, &project); }
void WorkspaceGenerator_MSVC8::write_install_batch_file(const Workspace &workspace, const Project &project) { // create the install_libname.bat installation batch file: { std::string bat_file = "Projects\\install_clan"; bat_file += project.name.c_str(); bat_file += ".bat"; std::ofstream bat(bat_file.c_str()); bat << "mode con cp select=" << GetACP() << " > nul" << std::endl; install_mkdir(bat, workspace.output_lib_dir); std::string instdir = workspace.output_include_dir.c_str(); instdir += "\\ClanLib"; install_mkdir(bat, "API\\", std::string(instdir), &project); install_copydir(bat, "API\\", std::string(instdir), &project); bat << "copy %1 \"" << workspace.output_lib_dir.c_str() << "\\%4\" > nul" << std::endl; if (target_android) //TODO: Fixme bat << "rem "; bat << "copy %2 \"" << workspace.output_lib_dir.c_str() << "\\%4\\%3\" > nul" << std::endl; } }
void WorkspaceGenerator_MSVC8::install_copydir( std::ofstream &bat, const std::string &src_dir, const std::string &dest_dir, const Project *project) { std::string path = src_dir.c_str(); if (path[path.length() - 1] != '\\') path += '\\'; std::string path_dest = dest_dir.c_str(); if (path_dest[path_dest.length() - 1] != '\\') path_dest += '\\'; if (project) { // first time call: // - make sure we copy the 'module' api header // - make sure we get API\\ModuleName\*.h in this run bat << "copy \"..\\Sources\\" << path.c_str() << project->headername.c_str() << "\" \"" << path_dest.c_str() << project->headername.c_str() << "\" > nul" << std::endl; // "\"\t"; path += project->name.c_str(); if (path[path.length() - 1] != '\\') path += '\\'; path_dest += project->name.c_str(); if (path_dest[path_dest.length() - 1] != '\\') path_dest += '\\'; } std::string prefix = "Sources\\"; WIN32_FIND_DATAA data; HANDLE handle = FindFirstFileA((prefix + path + "*.*").c_str(), &data); if (handle == INVALID_HANDLE_VALUE) return; static const char *exclude_from_build[] = { ".", "..", "CVS", ".svn", ".#", // don't add CVS revision backups. NULL }; do { bool skip = false; for (int i=0; exclude_from_build[i] != NULL; i++) if (stricmp(data.cFileName, exclude_from_build[i]) == 0) skip = true; if (skip) continue; if ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) { std::string subdir = data.cFileName; install_copydir( bat, std::string(path + subdir), std::string(path_dest + subdir), 0); } else { std::string file = data.cFileName; bat << "copy \"..\\Sources\\" << path.c_str() << file.c_str() << "\" \"" << path_dest.c_str() << file.c_str() << "\" > nul" << std::endl; // "\"\t"; } } while (FindNextFileA(handle, &data)); }