我正在尝试在项目中使用库。我下载了它并将其放在我保留项目所需的所有外部库的文件夹中。
当我将库作为CMakeLists.txt中的子目录添加并运行cmake时,库的CMakeLists.txt将其许可证(替换我的许可证)和许多其他文件复制到CMAKE_BINARY_DIR。
我不希望他们在那里。我想以某种方式将这些文件保存在库的自己的目录中。我如何实现这一目标?
我可以在调用子目录之前以某种方式设置CMAKE_BINARY_DIR吗?
我不想编辑库的CMakeLists.txt。
以下是复制文件:
的CMakeLists.txt:
project(MYPROJECT)
add_subdirectory(annoyer)
annoyer /的CMakeLists.txt:
project(ANNOYER)
file(COPY annoyingfile.txt DESTINATION ${CMAKE_BINARY_DIR})
运行cmake CMakeLists.txt
时,annoyingfile.txt
将移至顶级目录。我希望它留在annoyer/
。
答案 0 :(得分:1)
CMAKE_BINARY_DIR
始终引用顶级项目的二进制目录。
使用CMAKE_CURRENT_BINARY_DIR
来引用当前项目的二进制目录。
CMAKE_SOURCE_DIR
/ CMAKE_CURRENT_SOURCE_DIR
也是如此。
答案 1 :(得分:0)
您应该尝试使用add_subdirectory()
的可选第二个参数,它允许您指定二进制目录。像这样:
add_subdirectory(annoyer, annoyer_bin)
这应该避免annoyer因为内容构建烦恼而烦恼你的问题,并且还将其输出隔离在一个单独的子目录中。
答案 2 :(得分:0)
使用ExternalProject模块。这将它限制在自己的顶级目录中。
然后,您需要明确设置依赖关系,并通过众多方法之一使用生成的二进制文件。