【问题标题】:CLion linking library not detecting class yet the app worksCLion 链接库未检测到类但应用程序正常工作
【发布时间】:2018-07-17 15:09:26
【问题描述】:

我正在学习 C++,我正在使用 JetBrains CLion C++ IDE。我只是拼凑一个快速测试。

我有一个库项目,它有一个 Welcome 类,其中一种方法。下面是 Welcome.h 标头

class Welcome
{
public:
    void sayHello(string firstName, string lastName);
};

Welcome.cpp 文件

void Welcome::sayHello(string firstName, string lastName)
{
    cout << "Hello " << firstName << " " << lastName << endl;
}

在我的测试应用中,CMakeList.txt 中有以下内容

cmake_minimum_required(VERSION 3.6)
project(TestApp)

include_directories(includes C:\\Users\\Chris\\ClionProjects\\MyLib\\includes)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp TestClass.cpp)

add_executable(TestApp ${SOURCE_FILES})
target_link_libraries(TestApp C:\\Users\\Chris\\Desktop\\MyLib.a)

在 main.cpp 我有以下内容

#include <iostream>
#include "TestClass.h"
#include "Welcome.h"

int main() {

    TestClass testClass;
    testClass.helloWorld();

    Welcome welcome;
    welcome.sayHello("First", "Last");
    return 0;
}

CLion 很高兴找到 Welcome.h CLion成功编译运行项目,在控制台输出Hello First Last

但即使它运行了,并且 CLion 成功运行它,IDE 仍以红色显示 Welcome,当鼠标悬停在它上面时是 Can't resolve type 'Welcome'

这怎么会发生,我是否遗漏了什么或者这是 CLion 中的错误?我假设它似乎是一个非常简单的错误,并且我使用了 JetBrains 的其他 IDE,例如 PHPStorm 和 Android Studio,它们非常好。

【问题讨论】:

    标签: c++ clion


    【解决方案1】:

    经过一些试验和错误,我已经能够让它工作,但它似乎没有很好的记录。

    我在测试应用的CMakeLists.txt文件中修改了以下内容

    cmake_minimum_required(VERSION 3.6)
    project(TestApp)
    
    include_directories(includes C:\\Users\\Chris\\ClionProjects\\MyLib\\includes)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    
    set(SOURCE_FILES main.cpp TestClass.cpp)
    
    add_executable(TestApp ${SOURCE_FILES})
    add_library(myLib.a)
    set_target_properties(myLib.a PROPERTIES LINKER_LANGUAGE CXX)
    target_link_libraries(TestApp C:\\Users\\Chris\\Desktop\\myLib.a)
    

    注意添加了以下两行

    add_library(myLib.a)
    set_target_properties(myLib.a PROPERTIES LINKER_LANGUAGE CXX)
    

    【讨论】:

      【解决方案2】:

      让我们给你一个提示,比 Clion 显示的大多数错误来自 Cmake(或 GDB 编译)。每当您遇到问题时,首先检查 Cmake 文档,您可能会在 Cmakelists.txt 修改中找到答案。

      【讨论】:

        猜你喜欢
        • 2016-03-19
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-30
        • 1970-01-01
        • 2012-08-08
        相关资源
        最近更新 更多