檔案夾中的檔案結構/home/cyan/proj10
fst
| -- include
| |-- fstlib
| |-- fst_reader.h
|
| -- lib
|-- libfst.so
include
| -- A.h
| -- B.h
src
| -- A.cc
| -- B.cc
main.cc
CMakeLists.txt
fst檔案夾是我添加的一個庫。
CMakeList.txt
cmake_minimum_required(VERSION 3.0.0)
project(READ_FST VERSION 0.1.0)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_BUILD_TYPE Debug)
include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/fst/include)
link_directories(${CMAKE_SOURCE_DIR}/fst/lib)
add_executable(READ_FST main.cc src/A.cc src/B.cc)
target_link_libraries(READ_FST ${CMAKE_SOURCE_DIR}/fst/lib/libfst.so)
啊
#pragma once
#include <B.h>
namespace me {
class A{
public:
void init();
public:
double func(double a, double b, double c);
private:
B b_;
};
}
cc
#include <A.h>
namespace me {
void A::init() {
b_.init(1.0, 2.0, 1.0);
}
double A::func(double a, double b, double c) {
return b_.func(a, b, c);
}
}
主檔案
#include <A.h>
#include <B.h>
#include <iostream>
#include <./fstlib/fst_reader.h>
int main()
{
std::cout << "Hello World" << std::endl;
}
c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"defines": [],
"configurationProvider": "ms-vscode.cmake-tools",
"includePath": ["${workspaceFolder}/**"],
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
任務.json
{
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
"-g",
"-Wall",
"-I${workspaceFolder}/include",
"-I${workspaceFolder}/fst/include",
"${file}",
"-o",
"${workspaceFolder}/build/${fileBasenameNoExtension}",
],
"options": {
"cwd": "${workspaceFolder}/build"
},
"group": {
"kind": "build",
"isDefault": true
},
}
],
"version": "2.0.0"
}
問題
我可以編譯活動檔案并且智能感知很好。但是每次我單擊Run Code按鈕時,都會出現以下錯誤:
cyan@machine:~/proj10$ cd "/home/cyan/proj10/" && g main.cc -o main && "/home/cyan/proj10/"main
main.cc:1:10: fatal error: A.h: No such file or directory
#include <A.h>
^~~~~
compilation terminated.
uj5u.com熱心網友回復:
好的
第一的
嘗試使用CMake 擴展
第二
Run Code做一件簡單的事情 - 它從您當前的檔案編譯并運行程式。
cd "/home/cyan/proj10/" && g main.cc -o main && "/home/cyan/proj10/"main
此時的編譯對您的 CMake 專案、編譯標志、包含路徑等一無所知。
如果您嘗試以這種方式構建整個 CMake 專案,它將無法正常作業。您需要準確地構建 CMake 專案,并準確地運行已編譯的應用程式(最簡單的方法是使用第一段中的擴展名)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/445337.html
上一篇:鏈表SIGSEGV,分段錯誤
下一篇:如何在C 中推斷回傳型別
