CMake的 - 创建一个静态库
问题描述:
我有我的项目的两个文件名为Test4
:CMake的 - 创建一个静态库
Structure.h
Structure.c
我想创建一个可以谁想要使用这些文件的其他项目加载的静态库。这是我目前的CMake文件:
cmake_minimum_required(VERSION 3.6)
project(Test4)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES Structure.c Structure.h)
add_library(Test4 STATIC ${SOURCE_FILES})
当我使用该CMake文件构建时,没有生成静态库。什么都没发生。难道我做错了什么?
我正在使用CLion IDE。
答
add_library行应该是你所需要的。看到这个例子的代码,我只是写来测试一个创建,然后使用它(在Ubuntu 16.04):
Structure.h:
int sum(int a, int b);
Structure.c:
int sum(int a, int b) {
return a + b;
}
主。 C:
#include <stdio.h>
#include "Structure.h"
int main() {
int a = 5;
int b = 8;
int c = sum(a, b);
printf("sum of %d and %d is %d\n", a, b, c);
return 0;
}
的CMakeLists.txt:
# CMake instructions to make the static lib
ADD_LIBRARY(MyStaticLib STATIC
Structure.c)
# CMake instructions to test using the static lib
SET(APP_EXE StaticTest)
ADD_EXECUTABLE(${APP_EXE}
Main.c)
TARGET_LINK_LIBRARIES(${APP_EXE}
MyStaticLib)
然后在这里是运行它的输出:
[email protected]:~/code/cmake/static_lib$ ls
CMakeLists.txt Main.c Structure.c Structure.h
[email protected]:~/code/cmake/static_lib$ cmake .
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/nick/code/cmake/static_lib
[email protected]:~/code/cmake/static_lib$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake CMakeLists.txt Main.c Makefile Structure.c Structure.h
[email protected]:~/code/cmake/static_lib$ make
Scanning dependencies of target MyStaticLib
[ 25%] Building C object CMakeFiles/MyStaticLib.dir/Structure.c.o
[ 50%] Linking C static library libMyStaticLib.a
[ 50%] Built target MyStaticLib
Scanning dependencies of target StaticTest
[ 75%] Building C object CMakeFiles/StaticTest.dir/Main.c.o
[100%] Linking C executable StaticTest
[100%] Built target StaticTest
[email protected]:~/code/cmake/static_lib$ ls
CMakeCache.txt cmake_install.cmake libMyStaticLib.a Makefile Structure.c
CMakeFiles CMakeLists.txt Main.c StaticTest Structure.h
[email protected]:~/code/cmake/static_lib$ ./StaticTest
sum of 5 and 8 is 13
答
我有同样的问题。我错过了创建文件的位置。
CLion在cmake-build-*
目录下制作库或可执行文件。如果Build, Execution, Deployment > CMake > Configuration
是Debug
,则在cmake-build-debug
下创建lib文件(.a
)。
非常感谢你 – Hatefiend