Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CMake时如何阻止my.exe消失_C_Cmake_Command Line Interface - Fatal编程技术网

使用CMake时如何阻止my.exe消失

使用CMake时如何阻止my.exe消失,c,cmake,command-line-interface,C,Cmake,Command Line Interface,我正在使用cmake从命令行构建我的项目。问题是,一旦可执行文件完成运行,它就会立即消失,而我只有几毫秒的时间来记录屏幕上打印的内容。我不能在几毫秒内读很多东西。我能做些什么使控制台屏幕在执行完毕后不会立即消失 这是我的CMakeLists.txt: cmake_minimum_required(VERSION 2.8) project(TotallyFree C) add_executable(Acrolibre acrolibre.c) set(LIBSRC acrodict.c

我正在使用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;
}
/#包括
#包括
#包括
#包括
#ifdef使用ACRODICT
#包括“acrodict.h”
#恩迪夫
int main(int argc,char*argv[])
{
//int waitTime=10000000;
常量字符*名称;
#ifdef使用ACRODICT
const acroItem_t*项;
#恩迪夫
如果(argc<2)
{
fprintf(stderr,“%s:您需要一个参数,\n”,argv[0]);
fprintf(stderr,“%s\n”,argv[0]);
退出(退出失败);
}
name=argv[1];
#ifndef使用ACRODICT
//if(strcasecmp(名称,“toulibre”)==0){
如果(_stricmp(名称,“toulibre”)==0){
printf(“Toulibre是一家推广牙线的法国组织。\n”);
}
#否则
item=acrodict_get(名称);
如果(空!=项目){
printf(“%s:%s\n”,项目->名称,项目->说明);
}else if(项目=acrodict_get(名称)){
printf(“未知,可能您的意思是:\n”,名称);
printf(“%s:%s\n”,项目->名称,项目->说明);
}
#恩迪夫
否则{
printf(“对不起,我不知道:\n”,名字);
//睡眠(等待时间);
返回退出失败;
}
//睡眠(等待时间);
返回退出成功;
}

正如您所见,我甚至使用了Sleep()和#include来延迟控制台的关闭。但它不起作用。有什么建议吗?

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

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

当您在Windows中双击控制台EXE时,它会打开一个新的控制台,运行该程序,并关闭控制台,这应该是正确的

您有两个选择:

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

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


在主函数末尾调用一次就足够了吗?可能是重复的我试过了。程序运行后仍然立即消失
 printf("Press Enter to exit\n");
 getchar();