需求
正常情况下我们的项目各个子项目都在一个总的项目根目录下,但这次就需要使用外部的文件夹, 一个求解器文件夹(不动其代码),一个测试用例的相关项目,测试用例调用求解器内部代码进行相关测试。
处理过程
add_subdirectory命令,可以将指定的文件夹加到build任务列表中。下面是将与当前项目平级的一个目录下的子目录用add_subdirectory命令加进来的CMakelists.txt脚本片段 :
add_subdirectory(../test/test)
然后执行CMakeList.txt脚本时报错了:
报错原因也很明确,因为要添加的这个文件夹不是当前项目的子目录。最后一句指明了方向:要指定一个外部的文件夹必须显式指定。
但怎么显式指定?
下面是add_subdirectory命令的官方说明:
add_subdirectory有一个 binary_dir参数,这个参数用来指定source_dir在输出文件夹中的位置,如果没有指定的时候,就用source_dir的值。
如果要添加外部文件夹,binary_dir就必须指定。所以上面的代码修改如下:
add_subdirectory(../test/test test.out)
再执行CMakeList.txt正常通过,下图红框标出就是cassdk子目录下CMakeLists.txt的执行输出。