2017-05-04 5 views
4

静的ライブラリを作成し、私は私のプロジェクトでは2つのファイルがTest4呼ばれています:CMakeの -

Structure.h Structure.c

私はそれらのファイルを使用する他のプロジェクトでロードすることができ、静的ライブラリを作成したいです。

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のファイル、ノー静的ライブラリが生成されていることを使用して構築する場合:ここに私のcmakeのは、現在のファイルです。何も起こりません。私は何か間違っているのですか?

私はCLion IDEを使用しています。

答えて

5

add_library行が必要なものでなければなりません。私は(Ubuntuの16.04で)それを使用して、その後1を作成してテストするために書いて、このサンプルコードを参照してください。

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

1

私は同じ問題がありました。私が見逃したのは、ビルドファイルが作成される場所です。

CLionはcmake-build-*の下にライブラリまたはexectablesを作成します。 Build, Execution, Deployment > CMake > ConfigurationDebugの場合、libファイル(.a)はcmake-build-debugの下に作成されます。