를 만듭니다.
client.c 안에 lib.c에 정의 된 함수의 선언을 얻기 위해 lib.h 파일을 포함합니다.cmake 내가 세 개의 파일이 공유 객체
정확한 CMakeLists 파일을 말해 줄 사람이 나에게 알려줘서 소스 영역 Cmake의 임시 파일과 바이너리 및 라이브러리 (.dll은 믿을 수있는 Windows의 경우)가 별도의 빌드 및 바이너리 디렉토리에서 생성됩니다. Cmake는 기본적으로 별도의 빌드 디렉토리에 빌드
를 만듭니다.
client.c 안에 lib.c에 정의 된 함수의 선언을 얻기 위해 lib.h 파일을 포함합니다.cmake 내가 세 개의 파일이 공유 객체
정확한 CMakeLists 파일을 말해 줄 사람이 나에게 알려줘서 소스 영역 Cmake의 임시 파일과 바이너리 및 라이브러리 (.dll은 믿을 수있는 Windows의 경우)가 별도의 빌드 및 바이너리 디렉토리에서 생성됩니다. Cmake는 기본적으로 별도의 빌드 디렉토리에 빌드
(나는이 예제를 테스트하지 않았다) :
PROJECT(myproject)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
SET(mylibSRCS lib.c)
SET(myprogSRCS client.c)
ADD_LIBRARY(mylib ${mylibSRCS})
ADD_EXECUTABLE(myprog ${myprogSRCS})
TARGET_LINK_LIBRARIES(myprog mylib)
을 당신이 할 :
mkdir build
cd build
cmake ..
make
모든 빌드에서 일 것이다.
이 솔루션은 .so
파일을 만들지 않지만 cmake와 더 이상 포함 시키려면 cmake 상당 파일을 만듭니다. 내가 가진 솔루션을 찾고 있어요
이에 상응를 제공합니다 :
g++ -shared -Wl,-soname,plugin_lib.so.1 -o plugin_lib.so plugin_lib.o
실행시 dlopen을 동적으로로드 할 수있는 plugin_lib.so
를 생성한다.
ADD_LIBRARY(mylib SHARED ${mylibSRCS})
수락 된 답변이 업데이트되어야합니다. –
이 쉘 명령을 실행하지 않고 새로운 디렉토리에 항상 빌드 할 수있는 방법이 있나요 :
이 솔루션은 그래서 같은 "공유"옵션을 누락? 내가 봤지만 어떤 유용한 링크를 찾을 수 없습니다. –
http://getackoverflow.com/questions/11143062/getting-cmake-to-build-out-of-source-without-wrap-scripts/11144109#11144109 – Fraser
예. 'mkdir 빌드 & cd 빌드 & cmake .. & make' 할 수 있습니다. 저장소를 수퍼 클린업해야하는 경우 빌드 디렉토리 만 삭제하면됩니다. 이렇게하면 생성 된 항목이 원본 소스와 분리됩니다. – Stewart