今天导入在Clion上导入了一个其他开发环境下开发的项目,虽然能看得到代码,但是也只能看得到代码了,想要代码跳转,查看声明啥的都看不了,编写错误也不会提示,也不能编译执行。
查找原因原来是没有CmakeList,txt文件,但是代码文件那么多,我也不可能一个一个手配CmakeList,所以就网上找方法....
一.没有CmakeList文件时
找到菜单栏File中的import project导入项目就行,不能用Open File,否则就不会自动创建Cmakelist文件了。如果没有import project选项,就从菜单栏File->Setting->Appearance & Behavior->Menus &Toolbars ->选中Main menu下的File下的File Open Action->点击add after->找到import project后添加。
之后菜单栏File下就有import project了,重新导入项目文件夹,就会提示是否创建覆盖Cmakelist.txt文件,选择要include的文件,点确定就可以有已经配好的Cmakelist了。
二.有Cmakelist时.include 文件路径不存在问题
如果有如下一个文件目录
└─DEMOproject
└─AFile.h.
└─2nddictionary
└─BFile.h
└─3rddictionary
└─CFile.h
└─CMakeLists.txt
└─DEMOmain.cpp
想要demomain.cpp下include 头文件Afile,BFile,Cfile怎么include?
如果想包含头文件<AFile.h>,必须在Cmakelist中添加: include_dictionaries(.),不添加这句话想要include根目录下的文件或文件夹都不行。
如果想包含头文件<BFile.h>,必须在Cmakelist中添加 include_dictionaries(2nddictionary),如果不添加这句话,include就必须<2nddictionary/BFile.h>这样写。
同理如果想包含头文件<CFile.h>,必须在Cmakelist中添加 include_dictionaries(2nddictionary/3rddictionary),否则就要include相对路径的形式。
Cmakelist中的include_dictionaries()也就是include目录文件夹,当在代码文件中include文件时,文件会根据include_dictionaries(<目录>)的路径来配对,如果配对后路径中的文件存在则include文件成功,否则会标红。
其实,想要不这么麻烦也行:
在import Project时,选择include所有文件和文件夹,在生成的Cmakelist里再添加 include_dictionaries(.),include 文件不存在问题就不会发生了。