有时间,把这个博客拆分成一个个小问题出来,先这样全部写[2020-5-25]
无知小伙想在windows
上学习CJSON
,而后DEV C++
不管用。继小伙在Ubuntu
上成功用cmake
编译运行后,贪心的小伙想在windows
上也要用cmake
去实现,小伙因此学了vscode+cmake+mingw
实现了在vscode
上编译简单程序。而后,小伙便走向了不归路。
小伙是个正直善良的人,不达目的誓不罢休。而后在为了学技术而学技术
的神奇怪癖中,刚了好多天,刚到最后,小伙最终还是承认现实,我就是个菜逼
。
想用cmake,你就老老实实用Linux系统,别在windows瞎用cmake,windows上有大把更方便的编译器,何苦呢,骚年
vscode+cmake构建简单项目视频:
https://www.bilibili.com/video/BV1cE411J7d2?from=search&seid=4534315537070585506
|
|-build
|-lib
|--CMakeLists.txt
|--cJSON.c
|--cJSON.h
|-src
|--CMakeLists.txt
|--main.cpp
|-CMakeLists.txt
在这过程中出现的问题有
.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"
}
}
windows
下vscode里用cmake编译完文件后,文件的运行与Linux
下的cmake不同???
- linux下运行生成的文件按照cmake教程走就行
- windows下,生成
动态库
以后,你要把动态库
和.exe
放在同一个文件夹下来运行。可能有不用放在一起的操作,但是此时的我这个菜逼完全不知道啊
主要两个命令:
- cmake … 这个命令是可以用的
- make 这个命令不能用,需要改成
mingw32-make
vscode
中cmake命令
的install
无法实现文件的安装在经过上一个问题后,我认为我强大了一丢丢,实际上依然菜的男默女泪:
target_link_libraries(main CJSON)
,还是乖乖用名字就好,不要加文件的后缀变成libCJSON.dll
,我给你讲,你给人家加小尾巴,人家就会爆出一堆问题,来,压的你叫爸爸。爸爸,我再也不敢啦,我再也不给你加尾巴啦,放过我吧,我会乖乖用
linux
的。
cmake命令include_directories(${workspaceFolder}/build/lib)
,这个指令还是要包括进去,虽然没能够安装头文件,但是windows大人好像把头文件悄咪咪写到build文件中去了,不包括进去,就会出问题,这个原理目前的我没有搞懂。
想要将人家的心全部得到,唯一的方法,就是乖乖滚去看提供的英文参考文档,我真的不想看啊!!!但是我又必须看!!!但是我的身体不让我去看啊!!!我的脑子又认为看了是有很大帮助的!!!总结,我人没了。
我只是想用用它搭个编译框架啊!我的重点是我的算法啊!我死扣这个干啥啊!我人没了。
[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