我正在学习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,这些都非常好。
答案 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修改中找到答案。