외부 C 라이브러리 용 FindXXX.cmake
스크립트를 작성하고 있습니다. 스크립트에 라이브러리 버전 정보를 제공하고 싶습니다. 그러나 라이브러리는이 정보를 버전 번호를 문자열로 반환하는 함수 형식으로 만 제공합니다.CMake로 바이너리에서 라이브러리 버전을 추출하십시오.
내가 FindXXX.cmake
이 즉석에서 다음 C 프로그램을 컴파일함으로써 내가 버전 번호를 추출 할 수 있다고 생각 :
#include <stdio.h>
#include "library.h"
int main() {
char version[256];
get_version(version);
puts(version);
return 0;
}
, 인쇄 한 정보를 버전 식별자로 사용하십시오. 나는 후자 (execute_process
)를 수행하는 방법을 알고 있으며, 거의은 이전 방법을 알고 있습니다. CheckCSourceRuns
이 마음에 들지만 생성 된 실행 파일의 표준 출력을 캡처하는 방법을 모르겠습니다.
TL : DR : 프로그램을 컴파일하고 실행하고 생성 시간에 CMake에서 stdout을 캡처하는 방법이 있습니까?
감사합니다. 작동합니다! 크로스 컴파일에 대한 마지막 비트를 얻지 못했습니다. 정교한 케어? –
크로스 컴파일하면 * 라이브러리에 * 링크 (즉, 프로그램을 컴파일) 할 수 있지만 ** 라이브러리를로드 할 수 없습니다. 즉, 프로그램을 실행합니다. 이는 * 호스트 * 플랫폼 ('cmake '을 실행하는 곳)이 * target * 플랫폼 (라이브러리가로드 될 플랫폼)과 다르기 때문입니다. 이 경우 라이브러리의 버전을 얻으려면 다른 방법이 필요합니다. 예를 들어, 사용자에게 * target * machine에서 프로그램을 실행하도록 요청하고 해당 실행에 따라 특정 CMake 캐시 변수를 설정할 수 있습니다. – Tsyvarev