CMake 例子五六
来源:互联网 发布:校园网络广播系统 编辑:程序博客网 时间:2024/05/16 18:26
例子五
前面还是有一点不爽:如果想让可执行文件在 bin 目录,库文件在 lib 目录怎么办?
就像下面显示的一样:
+ build/
|
+--+ bin/
| |
| /--- hello.exe
|
/--+ lib/
|
/--- hello.lib
•一种办法:修改顶级的 CMakeList.txt 文件
project(HELLO)
add_subdirectory(src bin)
add_subdirectory(libhello lib)
不是build中的目录默认和源代码中结构一样么,我们可以指定其对应的目录在build中的名字。
这样一来:build/src 就成了 build/bin 了,可是除了 hello.exe,中间产物也进来了。还不是我们最想要的。
•另一种方法:不修改顶级的文件,修改其他两个文件
src/CMakeList.txt 文件
include_directories(${PROJECT_SOURCE_DIR}/libhello)
#link_directories(${PROJECT_BINARY_DIR}/lib)
set(APP_SRC main.c)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
add_executable(hello ${APP_SRC})
target_link_libraries(hello libhello)libhello/CMakeList.txt 文件
set(LIB_SRC hello.c)
add_library(libhello ${LIB_SRC})
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
set_target_properties(libhello PROPERTIES OUTPUT_NAME "hello")
例子六
在例子三至五中,我们始终用的静态库,那么用动态库应该更酷一点吧。 试着写一下
如果不考虑windows下,这个例子应该是很简单的,只需要在上个例子的 libhello/CMakeList.txt 文件中的add_library命令中加入一个SHARED参数:
add_library(libhello SHARED ${LIB_SRC})可是,我们既然用cmake了,还是兼顾不同的平台吧,于是,事情有点复杂:
•修改 hello.h 文件
#ifndef DBZHANG_HELLO_
#define DBZHANG_HELLO_
#if defined _WIN32
#if LIBHELLO_BUILD
#define LIBHELLO_API __declspec(dllexport)
#else
#define LIBHELLO_API __declspec(dllimport)
#endif
#else
#define LIBHELLO_API
#endif
LIBHELLO_API void hello(const char* name);
#endif //DBZHANG_HELLO_•修改 libhello/CMakeList.txt 文件
set(LIB_SRC hello.c)
add_definitions("-DLIBHELLO_BUILD")
add_library(libhello SHARED ${LIB_SRC})
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
set_target_properties(libhello PROPERTIES OUTPUT_NAME "hello")
恩,剩下来的工作就和原来一样了。
- CMake 例子五六
- cmake 学习笔记(六)
- CMake学习(六)
- Cmake Practice(六)
- CMake的简单例子
- cmake入门例子
- 一个Cmake的例子
- CMake教程及例子
- cmake 例子1
- cmake 例子2
- cmake 例子3
- Cmake的使用例子
- Cmake例子一二
- CMake 例子三四
- Cmake的一个例子
- CMake的简单例子
- cmake学习笔记(五)
- CMake学习(五)
- 数据库
- 中级篇——字典树(Trie树)
- C++ 学习笔记第一天
- 编程练习 15.11.5~15.11.8
- 2286: [Sdoi2011消耗战
- CMake 例子五六
- linux各种命令
- 1
- iOS——制作简单的View时系统方法的使用
- 函数参数的传递
- 编程练习 15.11.9~15.11.14
- zz) Sqlserver 分区
- hdu 1800 Flying to the Mars 字典树
- NDK编译静态库不install的解决方案