windows下CMake使用图文手册 Part 4
例子4:链接静态库(.lib)
例子3里面我们构建了date.lib, 这个例子里我们调用这个库。
前提:
date.h的头文件在
E:\Playground\CMakeExamples\DateLib\include
date.lib或date.dll文件在
E:\Playground\CMakeExamples\lib
CMakeLists.txt里需要用到这两个地址。
文件结构:
E:.
│ CMakeLists.txt
│
├─build
└─src
main.cpp
main.cpp:
// main.cpp
#include <iostream>
#include "date.h"
int main()
{
Date date(2016,05,05);
std::cout<<"Year:"<<date.getYear()<<" Month:"<<date.getMonth()
<<" day:"<<date.getDay()<<std::endl;
}
CMakeLists.txt内容
cmake_minimum_required(VERSION 3.5.2)
project(usingLib_test)
set(userLibDir "E:/Playground/CMakeExamples/lib")
#For the static library:
set (PROJECT_LINK_LIBS date)
link_directories(${userLibDir})
#Bring the headers, such as Date.h into the project
set( dateLibInclude "E:/Playground/CMakeExamples/DateLib/include/")
include_directories(${dateLibInclude})
#The file(GLOB...) allows for wildcard additions:
file(GLOB SOURCES "src/*.cpp")
add_executable(testUsingLib ${SOURCES})
target_link_libraries(testUsingLib ${PROJECT_LINK_LIBS} )
Tips: 注意引用变量时需要用${}而非$().
include_directories命令的帮助:
include_directories
-------------------
Add include directories to the build.
::
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
Add the given directories to those the compiler uses to search for
include files. Relative paths are interpreted as relative to the
current source directory.
The include directories are added to the ``INCLUDE_DIRECTORIES``
directory property for the current ``CMakeLists`` file. They are also
added to the ``INCLUDE_DIRECTORIES`` target property for each
target in the current ``CMakeLists`` file. The target property values
are the ones used by the generators.
By default the directories specified are appended onto the current list of
directories. This default behavior can be changed by setting
``CMAKE_INCLUDE_DIRECTORIES_BEFORE`` to ``ON``. By using
``AFTER`` or ``BEFORE`` explicitly, you can select between appending and
prepending, independent of the default.
If the ``SYSTEM`` option is given, the compiler will be told the
directories are meant as system include directories on some platforms.
Signalling this setting might achieve effects such as the compiler
skipping warnings, or these fixed-install system files not being
considered in dependency calculations - see compiler docs.
Arguments to ``include_directories`` may use "generator expressions" with
the syntax "$<...>". See the ``cmake-generator-expressions(7)``
manual for available expressions. See the ``cmake-buildsystem(7)``
manual for more on defining buildsystem properties.
link_directories
----------------
Specify directories in which the linker will look for libraries.
::
link_directories(directory1 directory2 ...)
Specify the paths in which the linker should search for libraries.
The command will apply only to targets created after it is called.
Relative paths given to this command are interpreted as relative to
the current source directory, see ``CMP0015``.
Note that this command is rarely necessary. Library locations
returned by ``find_package()`` and ``find_library()`` are
absolute paths. Pass these absolute library file paths directly to the
``target_link_libraries()`` command. CMake will ensure the linker finds
them.
windows下CMake使用图文手册 Part 4的更多相关文章
- windows下CMake使用图文手册 Part 3
例子3: 构建动态库(.dll) 静态库(.lib) 采用和例子2一样的文件,但删除了main.cpp E:. │ CMakeLists.txt │ ...
- windows下CMake使用图文手册 Part 1
维基百科介绍“CMake是个开源的跨平台自动化建构系统,它用配置文件控制建构过程(build process)的方式和Unix的Make相似,只是CMake的配置文件取名为CMakeLists.txt ...
- windows下CMake使用图文手册 Part 2
例子2:有目录的项目 我现在有个文件夹ProjectDate,有如下文件结构 E:. │ CMakeLists.txt │ ├─include │ Date.h │ └─src ...
- Windows下CMake编译安装OpenCV
Windows下CMake编译安装OpenCV 这是一个面向新手的在windows上运进opencv, helloword的教程. 在这里我们使用vs2019来编译opencv, 并运行一个hello ...
- 在Windows下编译ffmpeg完全手册
本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...
- [转]在Windows下编译ffmpeg完全手册
本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...
- windows下安装Mysql—图文详解
mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压 ...
- windows下安装Mysql(图文详解)
博客园 | 首页 | 新随笔 | 联系 | 订阅 | 管理 mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com ...
- Windows下C++/Fortran调用.exe可执行文件
目录 软件环境 Windows下CMake编译配置 设置项目的generator Command Line CMake GUI PreLoad.cmake 设置make 示例程序 CMake 设置Fo ...
随机推荐
- 深入理解 C 语言的函数调用过程
来源: wjlkoorey 链接:http://blog.chinaunix.net/uid-23069658-id-3981406.html 本文主要从进程栈空间的层面复习一下C语言中函数调用的具体 ...
- 手动创建Spring项目 Spring framework
之前学习框架一直是看的视频教程,并且在都配套有项目源码,跟着视频敲代码总是很简单,现在想深入了解,自己从官网下载文件手动搭建,就遇到了很多问题记载如下. 首先熟悉一下spring的官方网站:http: ...
- jquery里面的循环的用法
下面提一下jQuery的each方法的几种常用的用法 Js代码 var arr = [ "one", "two", "three", &qu ...
- 因为换工作,需要学习CCNA的课程
听说集齐7个CCIE就可以召唤神龙,不知道是不是真的,从CCNA开始吧! 加油!!!
- 《C与指针》第十三章练习
本章例程 13.1类型无关的链表查找 #include <stdio.h> #include "node.h" Node *search_list(Node *node ...
- jQuery 简介
jQuery 简介 jQuery 库可以通过一行简单的标记被添加到网页中. jQuery 库 - 特性 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML ...
- HDU-2296 Ring(AC自动机+DP)
题目大意:给出的m个字符串都有一个权值.用小写字母构造一个长度不超过n的字符串S,如果S包含子串s,则S获取s的权值.输出具有最大权值的最小字符串S. 题目分析:先建立AC自动机.定义状态dp(ste ...
- 连接列值 mysql CONCAT函数
mysql concat(str1,str2,...) 返回结果为连接参数产生的字符串,如果任何一个参数带有null,则返回结果为null.如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如 ...
- Struts2文件下载找不到输入流异常
先发异常 Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check ...
- android NDK debug 遇到的问题与解决方法
最近在研究android NDK 的eclipse调试,遇到点问题,总结一下: 1.Unknown Application ABI :在application.mk里面添加APP_PLATFORM ...