| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #ifndef EXE_COMMON_H
- #define EXE_COMMON_H
- #include <cstdlib>
- #include <fstream>
- #include <string>
- #include <vector>
- inline int runRealExe(const int argc, char** argv)
- {
- std::vector<std::string> args;
- std::string realMocPath;
- std::string const pathArg = "EXE_PATH=";
- std::string cmd;
- if (argc > 1) {
- for (int i = 1; i < argc; ++i) {
- std::string const arg = argv[i];
- if (arg.find(pathArg) != std::string::npos) {
- realMocPath = arg.substr(pathArg.length());
- // if EXE_PATH contains spaces, wrap it in quotes
- if (realMocPath.find(" ") != std::string::npos) {
- realMocPath = "\"" + realMocPath + "\"";
- }
- } else {
- args.push_back(arg);
- }
- }
- }
- #ifdef _WIN32
- cmd += "cmd /C \"";
- #endif
- cmd += realMocPath + " ";
- for (auto arg : args) {
- // if arg contains spaces, wrap it in quotes
- if (arg.find(' ') != std::string::npos) {
- cmd += " \"" + arg + "\"";
- } else {
- cmd += " " + arg;
- }
- }
- #ifdef _WIN32
- cmd += "\"";
- #endif
- std::cout << "Running real exe:" << cmd << std::endl;
- return std::system(cmd.c_str());
- }
- #endif
|