CLion链接库没有检测类但应用程序工作

时间:2016-09-24 23:46:11

标签: c++ clion

我正在学习C ++,而我正在使用JetBrains CLion C ++ IDE。我正在敲一个快速测试。

我有一个库项目,它有一个类欢迎用一个方法。以下是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,这些都非常好。

2 个答案:

答案 0 :(得分:0)

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

我在测试应用的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)

答案 1 :(得分:0)

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