gpt4 book ai didi

c++ - 为什么cmake不允许<>样式包含?

转载 作者:行者123 更新时间:2023-12-02 10:00:21 26 4
gpt4 key购买 nike

我对cmake并不陌生,但是我在Visual Studio上使用它来开发必须在linux上运行的程序。我需要以这种方式包括以下内容:

#include <xscontroller/xscontrol_def.h>
#include <xscontroller/xsdevice_def.h>
#include <xscontroller/xsscanner.h>
#include <xstypes/xsoutputconfigurationarray.h>
#include <xstypes/xsdatapacket.h>
#include <xstypes/xstime.h>
#include <xscommon/xsens_mutex.h>
但是,只有在执行以下操作时,Visual Studio才能识别文件:
#include "xscontroller/xscontrol_def.h"
#include "xscontroller/xsdevice_def.h"
#include "xscontroller/xsscanner.h"
#include "xstypes/xsoutputconfigurationarray.h"
#include "xstypes/xsdatapacket.h"
#include "xstypes/xstime.h"
#include "xscommon/xsens_mutex.h"
我在VS中的项目结构非常简单:
ANT
-out
-xscommon
-xscontroller
-xstypes
-ANT.cpp
-CMakeLists.txt
.
.
.
我需要的包含文件位于三个xs文件夹中,并且我相信它们在Visual Studio中以及将代码编译到linux时都必须用<>进行引用,因为每个 header 中的引用都是以<>形式完成的,即是什么导致此错误:
xscallbackplainc.h:68:10: fatal error: xstypes/pstdint.h: No such file or directory
#include <xstypes/pstdint.h>
^~~~~~~~~~~~~~~~~~~
在编译时。
简而言之,我真的只需要知道什么命令(无论是在CMakeLists.txt中还是其他地方)都可以在项目和已编译的项目上通过Linux上的ssh进行这种引用。我知道 #include ""#include <>之间的区别,但是我对cmake并不陌生,并且四处张望,找不到答案。

最佳答案

实现此目的的最简单方法是使用include_directories命令。只需将以下内容添加到您的ANT/CMakeLists.txt中:

include_directories(${CMAKE_CURRENT_SOURCE_DIR})
尽管我强烈建议使用 target_include_directories()代替。两者之间的区别在于, target_include_directories()仅针对一个 目标 [1]指定了包含目录。
[1]。 目标是通过 add_executable()add_library()指定的任何内容:
cmake_minimum_required(VERSION 3.12)

project(ANT)

add_executable(ANT ANT.cpp) #other source files as necessary

#format of target_include_directories:
# target_include_directories(target_name PUBLIC|PRIVATE PATH_TO_DIR)

target_include_directories(ANT PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

关于c++ - 为什么cmake不允许<>样式包含?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62863875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com