【发布时间】:2022-11-03 01:08:43
【问题描述】:
好的,所以我是使用 CMake 的新手,我试图让它在 vscode 中工作。我正在使用扩展 CMake 工具来运行构建和配置。我正在运行一个基本的 hello world 程序,该程序还编写输出以测试所有内容,当生成的可执行文件从终端运行时,它不会产生任何输出。
我期望发生的是,当我使用扩展名进行配置和构建时,它会生成一个输出文件,当从终端运行时会说 hello world 并编写一个示例文件。实际发生的是,从终端运行时它根本不输出任何内容,但是当通过扩展程序运行时,它确实在终端中提供文本输出,扩展程序打开并生成一个文件。
到目前为止,我尝试的是从 g++ 编译程序,它在终端运行时按预期工作,我创建了 cmake 项目并从终端手动构建它,它按预期从终端运行,我有最后从终端手动创建了 cmake 项目,并使用 build 任务在 vscode 内部构建它,它可以从终端运行按预期工作。唯一一次它似乎不像我预期的那样工作是当 vscode 扩展自动配置项目时。在所有的 cmake 项目中,它都是在发布模式下构建的。
关于输出的可执行文件,我注意到的一件事是,当被常规终端调用时,它们的文件大小比不输出的文件大,所以我假设自动配置中的某些设置导致了这种情况这可能是问题,只是我不确定是什么。
cpp程序的代码是
#include <iostream>
#include <fstream>
int main(int argc, char const *argv[])
{
std::ofstream myfile;
myfile.open ("example.txt");
myfile << "Writing this to a file.\n";
myfile.close();
std::cout<<"hello world"<<'\n';
return 0;
}
cmakelist.txt 是这个
cmake_minimum_required(VERSION 3.0.0)
project(abc123 VERSION 0.1.0)
include(CTest)
enable_testing()
add_executable(abc123 main.cpp)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
我还在为 gcc 编译器和 cmake 使用 MinGW 所以总而言之,有没有办法让扩展的自动配置生成一个输出文件,该文件可以从我系统上的任何地方运行,而不仅仅是通过 vscode 扩展
谢谢
编辑: 我在linux上尝试了同样的事情并且cmake扩展按预期工作似乎这只是Windows上的一个问题
【问题讨论】:
标签: c++ windows visual-studio-code cmake