CMake的 - 创建一个静态库

问题描述:

我有我的项目的两个文件名为Test4CMake的 - 创建一个静态库

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 
+0

非常感谢你 – Hatefiend

我有同样的问题。我错过了创建文件的位置。

CLion在cmake-build-*目录下制作库或可执行文件。如果Build, Execution, Deployment > CMake > ConfigurationDebug,则在cmake-build-debug下创建lib文件(.a)。