CMake添加子目录错误(_S):"指定树外来源时,必须明确指定二进制目录"

i2byvkas  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(258)

我有一个目录结构如下:

root
  libA
    CMakeLists.txt
    ClassA.cpp
  libB
    CMakeLists.txt
    ClassB.cpp
  sharedCode
    enums.h
    AbstractClass.h

在CMake文件中如何包含sharedCode目录?以便classA(在libA中)和classB(在libB中)都可以使用enums. 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.
2uluyalo

2uluyalo1#

正如错误所述,当指定当前树之外的相对源目录时,还必须提供第二个参数,该参数指定生成的二进制文件将放置的目录。
以下是add_subdirectory的文档:
binary_dir指定放置输出文件的目录。如果它是相对路径,则将根据当前输出目录进行计算,但它也可以是绝对路径。如果未指定binary_dir,则在展开任何相对路径之前,将返回source_dir的值。将使用(典型用法). CMakeLists。txt文件,CMake将立即处理该文件,然后在当前输入文件中继续处理中设置网格颜色.

相关问题