是什么在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. 在Schema.org中使用多个相同类型的项目JSON-LD
- 6. 多个项目,相同的文件
- 7. 缩短多个项目使用相同的ID的错误
- 8. 使用动态库运行cmake项目
- 9. CMake与多个相互依存的项目
- 10. 使用相同的数据库主机两个Laravel项目
- 11. Django,使用两个相同的项目数据库
- 12. 使用相同数据库的两个Django项目
- 13. android多个项目共享相同的库问题
- 14. 数据库设计:多个相同类型的项目
- 15. C#使用ArrayList.IndexOf与多个相同的项目
- 16. Git/Sourcetree使用相同的基础管理多个项目
- 17. 如何为多个项目使用相同的ContainerRequestFilter?
- 18. Android如何为多个项目和类使用相同的本机库(.so)?
- 19. VB.NET在更多的项目中使用相同的子类
- 20. 具有相同项目URL的IIS和多个项目?
- 21. 在grails中使用相同的ID更新许多项目
- 22. 在Zend中的两个不同项目中使用两个库
- 23. MSBuild使用两个不同的项目构建相同的DLL
- 24. 阻止从vb.net中的多个checkedlistbox检查相同的项目
- 25. xcode4:如何使用“git存储库”与不同计算机上的多个用户共享相同的项目?
- 26. 如何使用CMake链接多个库
- 27. TFService中的多个相关项目
- 28. 一个库在Android中使用与此项目错误相同的包?
- 29. 多个库中的相同R包
- 30. 在CMake项目中包含Windows库
我同意你关于使用多个项目,这就是我的意思。 “每个项目都建立这个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