impr: Allow console output to work when debugging (#1382)
This commit is contained in:
parent
215e1ffdc8
commit
58189e5403
@ -98,7 +98,10 @@ macro(configurePackingResources)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
|
if (NOT (CMAKE_BUILD_TYPE STREQUAL "Debug"))
|
||||||
set(APPLICATION_TYPE WIN32)
|
set(APPLICATION_TYPE WIN32)
|
||||||
|
endif ()
|
||||||
|
|
||||||
set(IMHEX_ICON "${IMHEX_BASE_FOLDER}/resources/resource.rc")
|
set(IMHEX_ICON "${IMHEX_BASE_FOLDER}/resources/resource.rc")
|
||||||
|
|
||||||
if (CREATE_PACKAGE)
|
if (CREATE_PACKAGE)
|
||||||
|
@ -537,6 +537,12 @@ namespace hex {
|
|||||||
*/
|
*/
|
||||||
std::string getCommitBranch();
|
std::string getCommitBranch();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Checks if ImHex was built in debug mode
|
||||||
|
* @return True if ImHex was built in debug mode, false otherwise
|
||||||
|
*/
|
||||||
|
bool isDebugBuild();
|
||||||
|
|
||||||
enum class UpdateType {
|
enum class UpdateType {
|
||||||
Stable,
|
Stable,
|
||||||
Nightly
|
Nightly
|
||||||
|
@ -641,6 +641,14 @@ namespace hex {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isDebugBuild() {
|
||||||
|
#if defined DEBUG
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
bool updateImHex(UpdateType updateType) {
|
bool updateImHex(UpdateType updateType) {
|
||||||
// Get the path of the updater executable
|
// Get the path of the updater executable
|
||||||
std::fs::path executablePath;
|
std::fs::path executablePath;
|
||||||
|
@ -232,6 +232,7 @@ namespace hex {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[[maybe_unused]]
|
||||||
static void reopenConsoleHandle(u32 stdHandleNumber, i32 stdFileDescriptor, FILE *stdStream) {
|
static void reopenConsoleHandle(u32 stdHandleNumber, i32 stdFileDescriptor, FILE *stdStream) {
|
||||||
// Get the Windows handle for the standard stream
|
// Get the Windows handle for the standard stream
|
||||||
HANDLE handle = ::GetStdHandle(stdHandleNumber);
|
HANDLE handle = ::GetStdHandle(stdHandleNumber);
|
||||||
@ -259,12 +260,17 @@ namespace hex {
|
|||||||
|
|
||||||
|
|
||||||
void Window::initNative() {
|
void Window::initNative() {
|
||||||
|
if (ImHexApi::System::isDebugBuild()) {
|
||||||
|
// If the application is running in debug mode, ImHex runs under the CONSOLE subsystem,
|
||||||
|
// so we don't need to do anything besides enabling ANSI colors
|
||||||
|
log::impl::enableColorPrinting();
|
||||||
|
} else if (hex::getEnvironmentVariable("__IMHEX_FORWARD_CONSOLE__") == "1") {
|
||||||
// Check for the __IMHEX_FORWARD_CONSOLE__ environment variable that was set by the forwarder application
|
// Check for the __IMHEX_FORWARD_CONSOLE__ environment variable that was set by the forwarder application
|
||||||
// If it's present attach to its console window
|
|
||||||
if (hex::getEnvironmentVariable("__IMHEX_FORWARD_CONSOLE__") == "1") {
|
// If it's present, attach to its console window
|
||||||
::AttachConsole(ATTACH_PARENT_PROCESS);
|
::AttachConsole(ATTACH_PARENT_PROCESS);
|
||||||
|
|
||||||
// Reopen stdin, stdout and stderr to the console
|
// Reopen stdin, stdout and stderr to the console if not in debug mode
|
||||||
reopenConsoleHandle(STD_INPUT_HANDLE, STDIN_FILENO, stdin);
|
reopenConsoleHandle(STD_INPUT_HANDLE, STDIN_FILENO, stdin);
|
||||||
reopenConsoleHandle(STD_OUTPUT_HANDLE, STDOUT_FILENO, stdout);
|
reopenConsoleHandle(STD_OUTPUT_HANDLE, STDOUT_FILENO, stdout);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user