Skip to content

Instantly share code, notes, and snippets.

@apriori
Created February 16, 2016 01:28
Show Gist options
  • Save apriori/0858e30f93a97bf3797c to your computer and use it in GitHub Desktop.
Save apriori/0858e30f93a97bf3797c to your computer and use it in GitHub Desktop.
project(lamewavtomp3)
include(ExternalProject)
find_package (Threads)
cmake_minimum_required(VERSION 3.4.3 FATAL_ERROR)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_include_directories(${PROJECT_NAME}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/deps/lame-3.99.5/include)
add_library(mp3lame_lib STATIC IMPORTED)
if(WIN32)
target_include_directories(${PROJECT_NAME}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/deps/pthreads-w32-2-9-1-release/pthreads.2
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/deps/dirent-1.10)
add_library(pthread_lib STATIC IMPORTED)
ExternalProject_Add(
libpthread
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/deps/pthreads-w32-2-9-1-release/pthreads.2
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/pthreads-w32-2-9-1-release/pthreads.2
BUILD_COMMAND nmake clean VC-static
BUILD_IN_SOURCE 1
)
ExternalProject_Add(
libmp3lame
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/deps/lame-3.99.5
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/lame-3.99.5
BUILD_COMMAND nmake -f Makefile.MSVC comp=msvc asm=no clean libmp3lame-static.lib
BUILD_IN_SOURCE 1
)
ExternalProject_Get_Property(libmp3lame install_dir)
set_target_properties(mp3lame_lib PROPERTIES
IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/deps/lame-3.99.5/output/libmp3lame-static.lib)
set_target_properties(pthread_lib PROPERTIES
IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/deps/pthreads-w32-2-9-1-release/pthreads.2/pthreadVC2.lib)
add_dependencies(${PROJECT_NAME} libpthread)
add_dependencies(${PROJECT_NAME} libmp3lame)
target_link_libraries(${PROJECT_NAME} PRIVATE pthread_lib)
else()
ExternalProject_Add(
libmp3lame
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/lame-3.99.5
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/deps/lame-3.99.5/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/deps/lame-3.99.5
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/deps/lame-3.99.5
BUILD_COMMAND make
BUILD_IN_SOURCE 1
)
ExternalProject_Get_Property(libmp3lame install_dir)
add_definitions(-std=c++14 -Werror -Wall)
set_target_properties(mp3lame_lib PROPERTIES
IMPORTED_LOCATION ${install_dir}/lib/libmp3lame.a)
add_dependencies(${PROJECT_NAME} libmp3lame)
endif()
#target_compile_features(${PROJECT_NAME} PUBLIC cxx_variadic_templates)
target_link_libraries(${PROJECT_NAME} PRIVATE mp3lame_lib)
target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_THREAD_LIBS_INIT})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment