CMake - 정적 라이브러리 작성
내 프로젝트에 두개의 파일이 있습니다.Test4
:
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에서 하나를 만든 다음 사용하는 것을 테스트하기 위해 방금 작성한 코드 예제를 참조하십시오.
구조.h:
int sum( int a, int b );
구조.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;
}
목록 만들기.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 )
다음은 실행한 결과입니다.
nick@dusseldorf:~/code/cmake/static_lib$ ls
CMakeLists.txt Main.c Structure.c Structure.h
nick@dusseldorf:~/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
nick@dusseldorf:~/code/cmake/static_lib$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake CMakeLists.txt Main.c Makefile Structure.c Structure.h
nick@dusseldorf:~/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
nick@dusseldorf:~/code/cmake/static_lib$ ls
CMakeCache.txt cmake_install.cmake libMyStaticLib.a Makefile Structure.c
CMakeFiles CMakeLists.txt Main.c StaticTest Structure.h
nick@dusseldorf:~/code/cmake/static_lib$ ./StaticTest
sum of 5 and 8 is 13
저도 같은 문제가 있었습니다.제가 놓친 것은 빌드 파일이 생성되는 위치입니다.
CLion은 라이브러리 또는 실행 파일을 아래로 만듭니다.cmake-build-*
디렉토리. 만약에Build, Execution, Deployment > CMake > Configuration
가Debug
, lib 파일().a
) 아래에 작성됩니다.cmake-build-debug
.
command cmake 를 사용한 후.그러면 Makefile에는 make default_target과 같은 옵션이 있고, 이를 취소하면 디렉토리에 .a 파일이 표시됩니다.https://cmake.org/cmake/help/v3.0/command/add_library.html 을 방문하면 도움이 될 것입니다!
언급URL : https://stackoverflow.com/questions/43772887/cmake-creating-a-static-library
'programing' 카테고리의 다른 글
Silver Searcher - 파일을 무시하는 방법 (0) | 2023.10.25 |
---|---|
도커 컴포지트를 사용하여 단일 컨테이너를 재시작하는 방법 (0) | 2023.10.25 |
ASP를 어떻게 뿌릴 겁니까?기존 웹 사이트 프로젝트에 MVC를 넣을 수 있습니까? (0) | 2023.10.25 |
R's magrittr의 python에서 %>%와 같은 기능 파이프 (0) | 2023.10.25 |
클랑이 더 많이 사용되지 않는 이유는 무엇입니까? (0) | 2023.10.25 |