虽然很容易找到有关如何使用CMake的表面信息,但是如何真正正确地使用CMake的信息似乎很难找到。在大小合适的CMake项目(一个可执行文件,该可执行文件使用的一个或多个静态库,静态库使用的一个或多个外部依赖项)中,文件夹和CMakeList.txt文件应如何排序?哪些CMakeList.txt文件应具有哪些命令?
学习其他项目是学习如何有效使用CMake的一个好方法。LLVM及其子项目就是一个很好的例子。
通常,良好的编码习惯可以转换为CMake良好习惯。您需要模块化,清晰的样式和灵活性。
这样的一个示例可能是具有在src
目录内构建可执行文件的规则,然后在根项目文件夹中使用该目标。像这样:
-my_proj
|
----CMakeLists.txt //contains directives for top-level dependencies and linking, includes subfolders
----src
|
----CMakeLists.txt //contains definition of your main executable target
----internal_lib
|
----CMakeLists.txt //contains definition of your internal static libraries
my_proj / CMakeLists.txt
add_subdirectory(src)
find_package (Threads REQUIRED) #find pthreads package
target_link_libraries (my_exe my_lib ${CMAKE_THREAD_LIBS_INIT}) #link against pthreads and my_lib
my_proj / src / CMakeLists.txt
add_subdirectory(internal_lib)
add_executable(my_exe my_source1.cpp mysource2.cpp)
my_proj / src / internal_lib / CMakeLists.txt
add_library(my_lib my_lib_source1.cpp my_lib_source2.cpp)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句