Cmake 3大关键词
3大关键词是private,interface和public
1)private
是私有的,hello-world中头文件不会includehello的头文件,也不会使用hello源文件的方法。
target_link_libraries(hello-world PRIVATE hello) // hello-world 表示可执行文件目标
target_include_directories(hello-world PRIVATE hello)
2)interface
生成 libhello-world.so 时,只在libhello-world.so 对外的头文件——hello_world.h 中包含 了 hello.h, hello_world.c 中不包含 hello.h,即 libhello-world.so 不使用 libhello.so 提供的功能,只使用 hello.h 中的某些信息,比如结构体。但是 main.c 需要使用 libhello.so 中的功能
target_link_libraries(hello-world INTERFACE hello)
target_include_directories(hello-world INTERFACE hello)
3)public
公开的
PUBLIC = PRIVATE + INTERFACE。生成 libhello-world.so 时,在 hello_world.c 和 hello_world.h 中都包含了 hello.h。并且 main.c 中也需要使用 libhello.so 提供的功能
target_link_libraries(hello-world PUBLIC hello)
target_include_directories(hello-world PUBLIC hello)