2016-09-24 26 views
0

我正在學習C++,我使用的是JetBrains CLion C++ IDE。我只是在一起快速測試。CLion鏈接庫沒有檢測到類但該應用程序工作

我有一個庫項目,其中有一個類的歡迎與一種方法。下面是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; 
} 

克利翁正高興地找到Welcome.h 克利翁編譯成功並運行該項目,並在控制檯其輸出Hello First Last

但是,即使它運行,而克利翁成功運行它,在IDE顯示歡迎的紅色和懸停鼠標時它是Can't resovle type 'Welcome'

這是怎麼發生的,我錯過了什麼或這是一個在CLION中的錯誤。我假設它是我看起來非常簡單的錯誤,並且我使用了JetBrains其他IDE,比如PHPStorm和Android Studio,這些都非常好。

感謝您提供的任何幫助。

回答

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) 
0

讓給你一個提示下,大部分比Clion顯示錯誤來自Cmake(或編譯時的GDB)。每當你陷入困境時,首先檢查Cmake文檔,你可能會在Cmakelists.txt修改中找到答案。

相關問題