Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake中的兄弟目录_C++_Cmake_Makefile - Fatal编程技术网

C++ CMake中的兄弟目录

C++ CMake中的兄弟目录,c++,cmake,makefile,C++,Cmake,Makefile,我的目录结构如下: root libA CMakeLists.txt ClassA.cpp libB CMakeLists.txt ClassB.cpp sharedCode enums.h AbstractClass.h 在CMake文件中,如何包含sharedCode目录?这样classA(在libA中)和classB(在libB中)都可以使用enum.h和AbstractClass.h 在CMakeLists.txt中,我尝试使

我的目录结构如下:

root
  libA
    CMakeLists.txt
    ClassA.cpp
  libB
    CMakeLists.txt
    ClassB.cpp
  sharedCode
    enums.h
    AbstractClass.h
在CMake文件中,如何包含sharedCode目录?这样classA(在libA中)和classB(在libB中)都可以使用enum.h和AbstractClass.h

在CMakeLists.txt中,我尝试使用:

add_subdirectory(../sharedCode)
但它给出了错误

  add_subdirectory not given a binary directory but the given source
  directory "/root/sharedCode" is not
  a subdirectory of "root/libA".  When
  specifying an out-of-tree source a binary directory must be explicitly
  specified.

正如错误所说,当在当前树之外指定相对源目录时,还必须提供第二个参数,指定生成的二进制文件将放置的目录

对于
添加子目录

binary_dir指定要在其中放置输出文件的目录。如果是相对路径,则将根据当前输出目录对其进行计算,但也可能是绝对路径。如果未指定binary_dir,则在展开任何相对路径之前,将使用source_dir的值(典型用法)。指定源目录中的CMakeLists.txt文件将由CMake立即处理,然后在当前输入文件中继续处理,超出此命令


即使您通过添加binary directory参数来解决给定的错误,您的
sharedCode
目录似乎也没有自己的
CMakeLists.txt
(如果它只包含头文件,这可能是一种过度使用)。所以我只需要做
包含_目录(../sharedCode)
。它可以包含cpp文件OK,然后你就有了我在我的一个项目中拥有的类似目录结构。有关反映您的设置的可能CMake解决方案的更多详细信息,请参见,例如,或啊,我阅读了错误,因为您无法指定树外源目录,只能指定树外二进制目录。为什么我需要提供第二个参数,我想这是因为它必须是一个子目录,但我只是添加了_子目录(../sharedCode../sharedCode)它成功了