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)它成功了