update cmakelists

This commit is contained in:
2021-01-04 20:57:28 +08:00
parent 2ff925cdc4
commit 71d0a5e3aa
2 changed files with 44 additions and 26 deletions

View File

@@ -2,8 +2,28 @@ cmake_minimum_required(VERSION 3.15.2)
# 设置工程名称和语言
project(LIBLBFGS VERSION 1.1.0)
# 设置安装地址 改用homebrew安装后这一句就不需要了
set(CMAKE_INSTALL_PREFIX /usr/local)
if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux")
message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
set(CMAKE_INSTALL_PREFIX "/usr/local")
elseif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin")
message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
set(CMAKE_INSTALL_PREFIX "/usr/local")
elseif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
# CMake中的路径分隔符统一为UNIX格式 不需要使用反斜杠 否则会报警
set(CMAKE_INSTALL_PREFIX "D:/Library")
else()
message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
set(CMAKE_INSTALL_PREFIX "/usr/local")
endif()
message(STATUS "Install prefix: " ${CMAKE_INSTALL_PREFIX})
# 添加源文件地址
add_subdirectory(src/)
# 添加编译选项
option(HAVE_CONFIG_H "use config.h" ON)
option(_MSC_VER "use __msc_ver" OFF)
@@ -13,5 +33,3 @@ configure_file(
"${PROJECT_SOURCE_DIR}/config.h.in"
"${PROJECT_SOURCE_DIR}/src/lib/config.h"
)
# 添加源文件地址
add_subdirectory(src/)

View File

@@ -17,20 +17,27 @@ set_target_properties(lbfgs PROPERTIES VERSION 1.1 SOVERSION 1.1)
# 设置库文件的输出地址
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
# 在LINUX中需添加math库
message("-- Operating system: ${CMAKE_SYSTEM}")
if(UNIX AND NOT APPLE)
message("-- Linking math library.")
message(STATUS "Linking math library.")
find_library(MATH_LIBRARY m)
find_library(MATH_A_LIBRARY libm.a)
target_link_libraries(lbfgs PUBLIC ${MATH_LIBRARY})
target_link_libraries(lbfgs_static ${MATH_A_LIBRARY})
endif()
# 添加编译命令
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
# 库的安装命令
install(TARGETS lbfgs lbfgs_static
if(WIN32)
install(TARGETS lbfgs DESTINATION lib)
install(TARGETS lbfgs_static DESTINATION lib)
else()
install(TARGETS lbfgs lbfgs_static
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
endif()
# 头文件安装命令
install(FILES lib/lbfgs.h DESTINATION include)
@@ -38,23 +45,16 @@ install(FILES lib/lbfgs.h DESTINATION include)
# 设置可执行文件的输出地址
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
# 添加可执行文件 命令行
add_executable(lbfgs_sample sample/sample.c)
# 为安装文件添加动态库的搜索地址
set_target_properties(lbfgs_sample PROPERTIES INSTALL_RPATH "/usr/local/lib")
# 链接动态库
target_link_libraries(lbfgs_sample PUBLIC lbfgs)
# 例子的编译方法
macro(add_sample name file)
# 添加可执行文件 命令行
add_executable(${name} sample/${file})
# 为安装文件添加动态库的搜索地址 在Windows下并没有什么用 直接忽略
set_target_properties(${name} PROPERTIES INSTALL_RPATH "/usr/local/lib")
# 链接动态库
target_link_libraries(${name} PUBLIC lbfgs)
endmacro()
# 添加可执行文件 命令行
add_executable(lbfgs_sample2 sample/sample2.cpp)
# 为安装文件添加动态库的搜索地址
set_target_properties(lbfgs_sample2 PROPERTIES INSTALL_RPATH "/usr/local/lib")
# 链接动态库
target_link_libraries(lbfgs_sample2 PUBLIC lbfgs)
# 添加可执行文件 命令行
add_executable(lbfgs_sample3 sample/sample3.cpp)
# 为安装文件添加动态库的搜索地址
set_target_properties(lbfgs_sample3 PROPERTIES INSTALL_RPATH "/usr/local/lib")
# 链接动态库
target_link_libraries(lbfgs_sample3 PUBLIC lbfgs)
add_sample(lbfgs_sample sample.c)
add_sample(lbfgs_sample2 sample2.cpp)
add_sample(lbfgs_sample3 sample3.cpp)