2. 想用cmake,你就老老实实用Linux系统,别在windows瞎用cmake,windows上有大把更方便的编译器,何苦呢,骚年

有时间,把这个博客拆分成一个个小问题出来,先这样全部写[2020-5-25]

一 问题描述

无知小伙想在windows上学习CJSON,而后DEV C++不管用。继小伙在Ubuntu上成功用cmake编译运行后,贪心的小伙想在windows上也要用cmake去实现,小伙因此学了vscode+cmake+mingw实现了在vscode上编译简单程序。而后,小伙便走向了不归路。

小伙是个正直善良的人,不达目的誓不罢休。而后在为了学技术而学技术的神奇怪癖中,刚了好多天,刚到最后,小伙最终还是承认现实,我就是个菜逼

想用cmake,你就老老实实用Linux系统,别在windows瞎用cmake,windows上有大把更方便的编译器,何苦呢,骚年

二 问题分析与解答

2.1 准备

vscode安装的插件
在这里插入图片描述

2.1.2 推荐视频:

vscode+cmake构建简单项目视频:
https://www.bilibili.com/video/BV1cE411J7d2?from=search&seid=4534315537070585506

2.1.3 测试文件结构

|
|-build
|-lib
  |--CMakeLists.txt
  |--cJSON.c
  |--cJSON.h
|-src
  |--CMakeLists.txt
  |--main.cpp
|-CMakeLists.txt

2.2 问题

在这过程中出现的问题有

  1. .vscode文件配置?
  • c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.10586.0",
            "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "msvc-x64",
            "configurationProvider": "vector-of-bool.cmake-tools"
        }
    ],
    "version": 4
}
  • launch.json,注意修改两个注释的位置
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "CjsonStudy",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/src/main.exe",//"${workspaceFolder}/build/src/main.exe", //我们要调试哪个程序
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe", //调试器位置
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}
  • settings.json这个文件,此时的我都不知道它是干嘛的,加上去再说
{
    "files.associations": {
        "*.txt": "cpp",
        "string": "cpp",
        "concepts": "cpp",
        "cstddef": "cpp",
        "cstdint": "cpp",
        "cstdio": "cpp",
        "cstdlib": "cpp",
        "cstring": "cpp",
        "cwchar": "cpp",
        "exception": "cpp",
        "initializer_list": "cpp",
        "iosfwd": "cpp",
        "limits": "cpp",
        "memory": "cpp",
        "new": "cpp",
        "type_traits": "cpp",
        "typeinfo": "cpp",
        "utility": "cpp",
        "xmemory": "cpp",
        "xstddef": "cpp",
        "xtr1common": "cpp",
        "xutility": "cpp",
        "array": "cpp",
        "atomic": "cpp",
        "*.tcc": "cpp",
        "cctype": "cpp",
        "clocale": "cpp",
        "cmath": "cpp",
        "cstdarg": "cpp",
        "cwctype": "cpp",
        "deque": "cpp",
        "unordered_map": "cpp",
        "vector": "cpp",
        "algorithm": "cpp",
        "memory_resource": "cpp",
        "optional": "cpp",
        "string_view": "cpp",
        "system_error": "cpp",
        "tuple": "cpp",
        "fstream": "cpp",
        "istream": "cpp",
        "ostream": "cpp",
        "sstream": "cpp",
        "stdexcept": "cpp",
        "streambuf": "cpp"
    }
   
}
  1. windows下vscode里用cmake编译完文件后,文件的运行与Linux下的cmake不同???
  • linux下运行生成的文件按照cmake教程走就行
  • windows下,生成动态库以后,你要把动态库.exe放在同一个文件夹下来运行。可能有不用放在一起的操作,但是此时的我这个菜逼完全不知道啊
  1. vscode无法在TERMINAL上使用cmake命令
    在这里插入图片描述

主要两个命令:

  1. cmake … 这个命令是可以用的
  2. make 这个命令不能用,需要改成mingw32-make
  1. vscodecmake命令install无法实现文件的安装

在经过上一个问题后,我认为我强大了一丢丢,实际上依然菜的男默女泪:

  1. 想要使用mingw32-make install安装.h文件,程序编译没问题,运行为啥不出结果??为啥没有安装到我想要的那个文件夹
  2. 想要安装动态库.exe那个文件夹中,这样可爱的我就不用手动将动态库移动到.exe文件一起。然而,运行报错,说我需要管理员权限,才能将动态库移动到一个我不想要的文件夹里。excuse me??? 系统都让你单身狗啊,只有伟大的我手动才能让你们在一起啊。
    在这里插入图片描述
  1. cmake命令target_link_libraries(main CJSON),还是乖乖用名字就好,不要加文件的后缀变成libCJSON.dll,我给你讲,你给人家加小尾巴,人家就会爆出一堆问题,来,压的你叫爸爸。

爸爸,我再也不敢啦,我再也不给你加尾巴啦,放过我吧,我会乖乖用linux的。

  1. cmake命令include_directories(${workspaceFolder}/build/lib),这个指令还是要包括进去,虽然没能够安装头文件,但是windows大人好像把头文件悄咪咪写到build文件中去了,不包括进去,就会出问题,这个原理目前的我没有搞懂。

  2. 想要将人家的心全部得到,唯一的方法,就是乖乖滚去看提供的英文参考文档,我真的不想看啊!!!但是我又必须看!!!但是我的身体不让我去看啊!!!我的脑子又认为看了是有很大帮助的!!!总结,我人没了。

  3. 我只是想用用它搭个编译框架啊!我的重点是我的算法啊!我死扣这个干啥啊!我人没了。

参考文献

[1] 从0到1的小姐姐. VSCode安装,配置,编译运行C++(详细整理). 简书. 2018. https://www.jianshu.com/p/febbf1e975b6
[2] 弯曲时空. VScode中使用Cmake遇到的问题及其解决方法(推荐). 脚本之家. 2020. https://www.jb51.net/article/186781.htm
[3] 一位失聪少年. (含字幕) 使用 VSCode CMake 构建 C/C++ IDE. bilibili. 2020.https://www.bilibili.com/video/BV1cE411J7d2?from=search&seid=4534315537070585506

猜你喜欢

转载自blog.csdn.net/ALexander_Monster/article/details/106341754
今日推荐