cmake语法学习 - 01 Basic - D - shared - library

Posted alexyuin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake语法学习 - 01 Basic - D - shared - library相关的知识,希望对你有一定的参考价值。

cmake_minimum_required(VERSION 3.5)

project(hello_library)

############################################################
# Create a library
############################################################

#Generate the shared library from the library sources
add_library(hello_library SHARED 
    src/Hello.cpp
)
add_library(hello::library ALIAS hello_library)

target_include_directories(hello_library
    PUBLIC 
        ${PROJECT_SOURCE_DIR}/include
)

############################################################
# Create an executable
############################################################

# Add an executable with the above sources
add_executable(hello_binary
    src/main.cpp
)

# link the new hello_library target with the hello_binary target
target_link_libraries( hello_binary
    PRIVATE 
        hello::library
)

 

*

add_library(hello_library SHARED 
    src/Hello.cpp
)

- SHARED must be upper case, and mark to generate a shared library.

Please note that, SHARED, do not miss the D here.

 

 

*

 

add_library(hello::library ALIAS hello_library)

 

- ALIAS , upper case only, just like "typedef". 

hello::library is the same as hello_library now. They are 2 names of the same thing.

And please note that "hello::library" is just a name !!! NO namespace in CMake!!!!

 

 

*

target_link_libraries( hello_binary
    PRIVATE 
        hello::library
)

- PRIVATE marks the linked files only avaliable in this scope.

In other words, within this subproject or the folder where this CMakeList.txt is.

 

以上是关于cmake语法学习 - 01 Basic - D - shared - library的主要内容,如果未能解决你的问题,请参考以下文章

cmake语法学习 - 01 Basic - E- installing

cmake语法学习 - 01 Basic - B Hello headers

01-cmake语法-基本

cmake basic

[cmake] Basic Tutorial

cmake 学习笔记