使用CMAKE时包括特定路径
我有以下代码结构:
--src
|--common--include--common---datatype--a_h_file.hpp
| |
| --src
|
|--main_lib
| |--------include-----one---one.hpp
| |
| |---src--------one----one.cpp
| CMakeLists.txt
|---main.cpp
CMakeLists.txt
main.cpp
使用 one.hpp
毫无问题。
文件
上层
cmake_minimum_required(VERSION 3.0.0)
project(MyProject VERSION 1.0.0)
add_subdirectory(main_lib)
add_executable(myproj main.cpp)
target_link_libraries(myproj PUBLIC mainpub)
一样
add_library(mainpub
src/one/one.cpp)
target_include_directories(mainpub PUBLIC include)
与此
我的 cmakelists.txt
已决定 one.hpp
应该包括 a_h_file.hpp
这样
(one.hpp)
#pragma once
float addition(float,float);
#include "common/data_type/a_h_file.hpp" //<---THIS!
class whatever{
public:
int number=1;
};
,所以我的问题是如何修改cmake文件以包括路径/src/common/inclus
to将要考虑的路径,以便能够使用 a_h_file.hpp
?
编辑:我尝试过
cmake_minimum_required(VERSION 3.0.0)
project(MyProject VERSION 1.0.0)
add_library(Common INTERFACE)
target_include_directories(Common INTERFACE common/include)
add_subdirectory(main_lib)
add_executable(myproj main.cpp)
target_link_libraries(myproj PUBLIC mainpub)
,但在另一个方面
add_library(mainpub
src/one/one.cpp)
#target_include_directories(mainpub PUBLIC include ../common/include)
#target_include_directories(mainpub PUBLIC Common)
#target_include_directories(mainpub PUBLIC include)
target_include_directories(mainpub PUBLIC Common include)
没有工作:(
fatal error: common/data_type/a_h_file.hpp: No such file or directory
#include "common/data_type/a_h_file.hpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~~
edit2:
修改了第二个cmake文件也
add_library(mainpub
src/one/one.cpp)
target_link_libraries(mainpub PUBLIC Common)
target_include_directories(mainpub PUBLIC include)
无法正常工作。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,在顶级cmakelists.txt中为您的公共目录定义
接口
目标:然后,只需在目标中链接到它,这将传播包含目录:
First, define an
INTERFACE
target for your common directory in the top-level CMakeLists.txt:Then just link against it in your targets, which will propagate the include directories: