是什么在C进行实践建立(不是一次),它使用同一个库中的多个项目?据我所知,在CMake中,人们倾向于使用子目录方法。但是,如果没有库源重复,库不能成为多个项目的真正子目录。还有一个顶级的CMakeLists.txt方法,但是我不认为这是一个好的解决方案,因为你必须为每个项目创建它,并且它必须是项目目录的一个级别,它不能很好地与源代码控制配合使用(比如GIT),您希望单个项目具有单个存储库/目录。CMake的多个项目中使用相同的库
0
A
回答
0
我居然在这里找到可接受的解决方案: http://www.mail-archive.com/[email protected]/msg39062.html 这在某种程度上类似于add_subdirectory
指定上一级目录的想法,但不污染项目的CMakeLists.txt文件,而是通过CMake参数传递相关的项目路径。这种方式项目的CMakeLists.txt文件似乎服从普通的CMake子目录层次结构。我必须说,CMake以某种方式强迫我们使用子目录层次结构感觉有点不对,但我不知道背后的所有原因,所以可能没关系。
1
的CMake是一个跨平台的make工具“使”,包括包含子项目的项目。因此,一个来源是否是这个结构的一部分。但恕我直言cmake不是管理一个主要项目树中的所有项目的工具。
我的做法是建立独立的项目。每个项目都会构建库,测试,文档并将其安装到项目商店中。在其他库或应用程序需要其中一个库的情况下,它将在该项目的cmake文件中引用。
因此这些项目的版本是独立的,项目是较小的,并且可以根据需要进行组合。
我使用脚本来建立我的所有库的应用程序。但是这可以被cmake替换。
- 取决于库
- 添加自定义命令到最顶级的项目,以触发引用LIB的构建的构建让最顶级项目的构建。
可能的解决办法:
add_custom_command(TARGET myapp PRE_LINK
COMMAND cd /mypath/libA && mkdir build && cd build && cmake ../source && make install)
add_custom_command(TARGET myapp PRE_LINK
COMMAND cd /mypath/libB && mkdir build && cd build && cmake ../source && make install)
add_executable(myapp ${SOURCES})
相关问题
- 1. Cmake - 具有多个项目的库
- 2. 在CMake中使用多个项目
- 3. CMake的:使用相同的静态库
- 4. CMake的:由多个项目
- 5. 使用相同的代码库Android多个项目
- 6. 一个CMakeLists.txt中的多个CMake项目
- 7. 使用依赖于另一个库的库的CMake项目
- 8. 在cmake的项目中使用静态库一个probem
- 9. 在Schema.org中使用多个相同类型的项目JSON-LD
- 10. 在多个项目中使用相同的hibernate映射文件
- 11. 在iOS中使用与多个配置项目相同的项目?
- 12. 重复符号(项目使用库使用与项目相同的库)
- 13. CMake项目automake库
- 14. 多个项目,相同的文件
- 15. 使用cmake从整个项目中创建一个静态库
- 16. 缩短多个项目使用相同的ID的错误
- 17. 使用相同的XIB的多个Swift Storyboard项目
- 18. 使用动态库运行cmake项目
- 19. CMake与多个相互依存的项目
- 20. 使用相同的数据库主机两个Laravel项目
- 21. 使用相同数据库的两个Django项目
- 22. Django,使用两个相同的项目数据库
- 23. android多个项目共享相同的库问题
- 24. 数据库设计:多个相同类型的项目
- 25. 使用公共库的多个项目
- 26. 对多个github项目使用相同的部署密钥
- 27. 如何为多个项目使用相同的ContainerRequestFilter?
- 28. C#使用ArrayList.IndexOf与多个相同的项目
- 29. 对多个codeigniter项目使用相同的配置文件
- 30. jQuery - 对多个项目对使用相同的脚本
我同意你关于使用多个项目,这就是我的意思。 “每个项目都建立这个lib” - 但是如果它没有放在项目的子目录中,它如何构建库?我不能将同一个库源放在多个项目中。它是一个不好的做法,通过以下add_subdirectory调用包含库为项目生成?:'add_subdirectory(“傻瓜” CMake的“$ {} CMAKE_CURRENT_SOURCE_DIR /../ common_library”,“$ {} CMAKE_CURRENT_SOURCE_DIR /../ common_library /建“)' – jozols
AFAIK不可能离开cmake树(最后尝试了一些版本之前)。但为什么不'cmake' +'make' +'make install'是基础库。然后在取决于的CMakeLists.txt中包含** find_library mylib **或** find_package mypackage **?你有没有找到find_library? –
我的项目使用了大量的库,我希望一次性构建它们,而不是单独构建它们,并自己考虑依赖关系。使用add_subdirectory的方法至少从一开始就起作用,但它感觉与CMake有点矛盾:)不知道你的意思是“你有没有find_library out?”,如果我使用find_library进行构建,不需要使用find_library add_subdirectory。 – jozols