2014-07-19 1 views
0

코드는 C++으로 작성되었지만 python-numpy 인터페이스도 제공하므로 두 가지 모드 (with-numpy 또는 without-numpy)로 컴파일 할 수 있습니다. Makefile에서 변수를 플래그로 설정할 수 있습니다. 예를 들어 make을 사용하여 libmylib.so을 생성하고 make numpy=1을 사용하여 libmylibpy.so을 생성 할 수 있습니다. 실제로 Makefile에서 numpy=1을 사용하여 CXXFLAGS-DNUMPY_INTERFACE으로 정의합니다.하나의 플래그에 따라 하나의 CMakeFiles.txt에서 다른 공유 라이브러리를 생성하는 방법

이제 프로젝트를 cmake 프로젝트로 변경하고 싶습니다. 다음은 numpy 인터페이스없이 간단한 CMakeFiles.txt를 다음과 같습니다

가 가
cmake_minimum_required(VERSION 2.6 FATAL_ERROR) 
    set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin) 
    set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin) 
    project(mylib) 

    include_directories(include) 
    add_library(mylib SHARED 
    include/common.h 
    include/util.h 
    src/common.cpp 
    src/util.cpp 
    ) 

어떻게 또는 numpy 인터페이스없이 다른 공유 라이브러리를 생성하는 플래그로 CMakeFiles.txt를 업데이트 할 수 있을까?

답변

1

build option을 추가해야합니다.

# your library 
add_library(mylib ...) 

# add an option to include numpy 
option(WITH_NUMPY "Determines whether to build with or without numpy.") 

# if numpy is requested, set the NUMPY_INTERFACE preprocessor flag 
if(WITH_NUMPY) 
    target_compile_definitions(mylib PUBLIC NUMPY_INTERFACE) 
endif() 

당신은 어느 GUI 인터페이스에서, 또는 cmake -DWITH_NUMPY=TRUE <path_to_source>을 사용하여 명령 줄에서 사용자 정의 WITH_NUMPY 옵션을 설정할 수 있습니다.

빌드 옵션이 캐시됩니다. 다시 말하면 옵션을 다시 지정하지 않으면 마지막 실행 옵션을 계속 재사용합니다.

CMake를 실행할 때만 옵션을 주지만 나중에 생성 된 생성 된 Makefile을 실행할 때는 옵션을 제공하지 않습니다. 따라서 옵션을 변경하려면 CMake를 다시 실행해야합니다.

+0

감사합니다. 그러나 우리는'CMake 2.8.11' 또는 그 이상에서'target_compile_definitions'을 사용해야합니다. – mining

관련 문제