我正在使用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 argument\n", 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: %s\n", item->name, item->description);
}else if(item = acrodict_get(name)){
printf("<%s> is unknown maybe you mean:\n", name);
printf("%s: %s\n", 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来延迟关闭控制台的时间。但这是行不通的。有什么可以推荐的吗?
答案 0 :(得分:0)
问题不在此处的make文件中。程序退出,控制台窗口消失。从getch()
返回之前,请尝试使用main()
,以使程序在退出之前等待任何键。或者,您可以从控制台运行程序。
答案 1 :(得分:0)
这与CMake无关,与您运行应用程序的方式无关。
在Windows中双击控制台EXE时,它会打开一个新的控制台,运行该程序,然后关闭该控制台。
您有两个选择:
从已经打开的控制台(cmd.exe
)的命令行运行程序
将此代码添加到main
的末尾:
printf("Press Enter to exit\n");
getchar();