如果我们在调用 option()[33] 之前配置文件,我们将不会使用 USE_MYMATH 的预期值。 参考资料 [1] add_library(): cmake.org/cmake/help/la [2] add_subdirectory(): cmake.org/cmake/help/la [3] target_link_libraries(): cmake.org/cmake/help/la [4] target_link_directories(): c...
add_subdirectory(math) # 指定生成目标 add_executable(Demo main.cc) # 添加链接库 target_link_libraries(Demo MathFunctions) 该文件添加了下面的内容: 第3行,使用命令add_subdirectory指明本项目包含一个子目录 math,这样 math 目录下的 CMakeLists.txt 文件和源代码也会被处理 。第6行,使用命令target_link_...
if (NOT TEST_OPTION)message(STATUS "NOT-TEST_OPTION ON.") else ()message(STATUS "NOT-TEST_OPTION OFF.")endif()add_subdirectory(sub)add_executable(test test.c) 子工程编译脚本: #Cmake最低版本要求cmake_minimum_required(VERSION3.16) #项目名称project(CMakeExpSub)message(STATUS "\n\nCMakeExp...
add_library(target-name STATIC 1.c 2.c ...) 3. 同时生成动态库和静态库 将上述两条指令写入 hello-world/CMakeLists.txt 中,即: project(hello-world C) add_subdirectory(hello) add_subdirectory(world) add_library(${PROJECT_NAME} SHARED hello_world.c) add_library(${PROJECT_NAME}...
add_library(MathFunctions mysqrt.cpp) 1. 新建MathFunctions.h,在里面定义 // 声明函数的形式 double mysqrt(double x); 1. 2. 在这个文件夹中创建源文件mysqrt.cpp。在里面实现这个函数。 添加这个新库到项目 为了利用新库,在工程根目录下的CMakeLists.txt添加add_subdirectory()来构建我们自己的库。
此时需要了解一下cmake命令option命令。并为根目录的cmake添加: option(USE_MYMATH "Use code provided math implementation" ON) 然后按照这个选项的值来让编译器编译连接此库。为此我们把根目录的CMakelists.txt改造为。 if(USE_MYMATH)add_subdirectory(MathFunctions)list(APPENDEXTRA_LIBSMathFunctions)list(APPEN...
CMake中的add_subdirectory命令用于将子目录添加到构建,其格式如下: add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL] [SYSTEM]) 1. source_dir指定源CMakeLists.txt和代码文件所在的目录。如果它是相对路径,则将相对于当前目录(典型用法)对其进行评估,但它也可能是绝对路径。binary_dir指定放置输出...
option(USE_MYMATH "Use tutorial provided math implementation" ON) # 配置生成header文件 configure_file(tutorial_config.h.in tutorial_config.h) # 添加 math_functions 库 if(USE_MYMATH) add_subdirectory(math_functions) list(APPEND EXTRA_LIBS math_functions) ...
file(), string()等命令,我们可以让实现CMake自动按目录结构生成filter。 方法很简单,代码如下:
add_subdirectory("share") 14.Message message(STATUS “message text”) 状态信息 message(“message text”) 一般通知 message(FATAL_ERROR “message text”) 验证错误,停止编译 message(WARNING “message text”) 警告,继续编译 15.包含文件 FILE (GLOB_RECURSE ALL_LOG "spdlog/*h" "spdlog/*cpp") ...