我有一个使用CMake的C++项目,我想让我的#include
给予一些关于它们所包含的东西是来自于没有..
的东西的想法。对于下面的例子,我可以通过使用#include "Common.h"
或#include "../common/Common.h"
来使用MainWindow.h
中的Common.h
,这取决于我如何设置我的CMake。
是否有一种方法可以通过使用#include "common/Common.h"
,也就是使用某个基本文件夹的相对路径,从MainWindow.h
中包含Common.h
(src
可以工作)?
文件夹结构大致为:
src:
common:
Common.h
gui:
MainWindow.h
MainWindow.cpp
...
C在stc/gui/MainWindow.h
中为#include "../common/Common.h"
制作。
src:
CMakeLists.txt
common:
Common.h
gui:
MainWindow.h
MainWindow.cpp
...
文件名
# ... CMake boiler plate. ...
add_executable(GUI common/Common.h gui/MainWindow.h gui/MainWindow.cpp)
C为#include "Common.h"
制作
src:
CMakeLists.txt
common:
CMakeLists.txt
Common.h
gui:
MainWindow.h
MainWindow.cpp
...
文件名
# ... CMake boiler plate. ...
add_libary(GUICommon Common.h)
文件名
# ... CMake boiler plate. ...
add_executable(GUI gui/MainWindow.cpp)
add_subdirectory(common)
target_link_libraries(GUI PRIVATE GUICommon)
谢谢你的帮助!
1条答案
按热度按时间hgb9j2n61#
您需要为GUIComon目标添加包含目录。
在以下行之后:
加了
使用target_link_libraries()链接到
GUICommon
时,include目录将添加到当前目标,因为您在target_include_directories()中具有PUBLIC