这一步主要是学会在项目里添加库
如果有一个文件夹,文件夹名为:MathFunctions,文件夹里包含了两个文件,即MathFunctions.h和mysqrt.cxx,
一个是头文件,一个是sqrt函数的功能实现,要将此文件夹编译层库,需在文件夹下添加一个CMakeLists.txt文件
文件中只需添加一行
add_library(MathFunctions mysqrt.cxx)
即可,这句话的含义也很直观,直接通过字面就可以解读:添加一个名为MathFunctios的库,将mysqrt.cxx添加到库里。
下面设置需要调用这个库的项目的CMakeLists.txt文件
只需要添加如下几句话即可:
include_directories("$(PROJECT_SOURCE_DIR}/MathFunctions")
add_subdirectory(MathFunctions)
add_executable(Tutorial tutorial.cxx)
target_link_libraries(Tutorial MathFunctions)
含义也很直观,指定了库的路径,并指定连接器把MathFunctions录包含进去。
如果要把库设置成可选项,则是在项目的CMakeLists.txt文件里添加如下的语句:
# should we use our own math functions? option (USE_MYMATH "Use tutorial provided math implementation" ON)
# add the MathFunctions library? # if (USE_MYMATH) include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions") add_subdirectory (MathFunctions) set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions) endif (USE_MYMATH) # add the executable add_executable (Tutorial tutorial.cxx) target_link_libraries (Tutorial ${EXTRA_LIBS})
在TutorialConfig.h.in文件里添加如下语句:
#cmakedefine USE_MYMATH即可
在程序里就可用
#ifdef USE_MYMATH #include "MathFunctions.h" #endif 来判断是否使用库了。