cmake 질문 드립니다.

vudghkzm의 이미지

기존의 Makefile의 경우, 쉘 명령어의 출력 결과를 변수에 저장해서 재사용할 수 있는데요.
예를 들면,

TMP_FILE=`mktemp`
 
test::
    echo "abc" > $(TMP_FILE)
    echo "def" > $(TMP_FILE)

위 코드에서 TMP_FILE 이라는 변수가 그런 역할을 할 수가 있는거죠.

근데 위와 같은 걸 cmake로 표현을 하자니.. 도대체 어떻게 하면 되는건지 생각이 안 떠오르네요.

혹시 cmake 잘 아시는 분 계시면 꼭 좀 답변 부탁드립니다.

goahno의 이미지

cmake는 잘 모릅니다만...
위의 소스에서 mktemp라는 명령어는 temp 파일을 생성해주는 명령어입니다.
대충 "abc"라는 문자열과 "def"라는 문자열을 각각의 temp 파일로 리다이렉트하는 것 같은데요.

마냥의 이미지

TMP_FILE이란 변수에 mktemp 실행 결과가 저장됩니다. `mktemp` 앞 뒤에 `랑 '랑 달라요
----
Gentoo Rules!

Gentoo Rules!

마냥의 이미지

CMake 쓰고는 있는데 덕분에 새로운 걸 알았습니다^^

EXECUTE_PROCESS 명령을 이용하면 되네요.

CMakeLists.txt

CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
 
EXECUTE_PROCESS (COMMAND mktemp
	OUTPUT_VARIABLE MKTEMP_OUTPUT
	)
 
MESSAGE (STATUS ${MKTEMP_OUTPUT})

Result:

abcdef@ghijklmn ~/temp $ cmake .
-- /tmp/tmp.U5gPbuNWCI
 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/abcdef/temp

----
Gentoo Rules!

Gentoo Rules!