C语言 如何在使用CMake时阻止我的.exe消失



我正在使用cmake从命令行构建我的项目。问题是,一旦可执行文件完成运行,它就会立即消失,我只有几毫秒的时间打印在屏幕上的内容。我无法在几毫秒内阅读太多内容。我能做些什么来使控制台屏幕在完成执行后不会立即消失?

这是我的CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(TotallyFree C)
add_executable(Acrolibre acrolibre.c)
set(LIBSRC acrodict.c acrodict.h)
add_library(acrodict ${LIBSRC})
add_executable(Acrodictlibre acrolibre.c)
target_link_libraries(Acrodictlibre acrodict)
set_target_properties(Acrodictlibre PROPERTIES COMPILE_FLAGS "-DUSE_ACRODICT")

这是我的 main.cpp 的等价物:

//#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#ifdef USE_ACRODICT
#include "acrodict.h"
#endif
int main(int argc, char* argv[])
{
//int waitTime = 10000000;
const char* name;
#ifdef USE_ACRODICT
const acroItem_t* item;
#endif
if(argc < 2)
{
fprintf(stderr, "%s: you need one argumentn", argv[0]);
fprintf(stderr, "%s <name>n", argv[0]);
exit(EXIT_FAILURE);
}
name = argv[1];
#ifndef USE_ACRODICT
//if(strcasecmp(name, "toulibre")==0){
if(_stricmp(name, "toulibre")==0){
printf("Toulibre is a French organization promoting FLOSS.n");
}
#else
item = acrodict_get(name);
if(NULL != item){
printf("%s: %sn", item->name, item->description);
}else if(item = acrodict_get(name)){
printf("<%s> is unknown maybe you mean:n", name);
printf("%s: %sn", item->name, item->description);
}
#endif
else{
printf("Sorry, I don't know: <%s>n", name);
//Sleep(waitTime);
return EXIT_FAILURE;
}
//Sleep(waitTime);
return EXIT_SUCCESS;
}

如您所见,我什至使用 Sleep(( 和 #include 来延迟控制台的关闭。但它不起作用。有什么可以推荐的吗?

问题不在这里的制作文件中。程序退出,控制台窗口消失。尝试在从main()返回之前使用getch(),以便程序在退出之前等待任何密钥。或者,您可以从控制台运行程序。

这与 CMake 无关,而与您运行应用程序的方式有关。

当您在 Windows 中双击控制台 EXE 时,它会打开一个新控制台,运行该程序,然后关闭控制台,它应该。

您有两种选择:

  • 从已打开的控制台的命令行运行程序 (cmd.exe(

  • 将此代码添加到main末尾:

printf("Press Enter to exitn");
getchar();

最新更新