通過cmake將c/c++專案編譯成可執行檔案或靜態庫或共享庫
在專案根目錄建立cmakelists.txt檔案,及專案src目錄下建立新增編譯檔案的cmakelists.txt檔案。可以根據專案需求配置依賴庫和需要生成的檔案。
編譯專案的cmakelists.txt檔案:
macro (add_sources) #遍歷工程檔案
file (relative_path _relpath "$"
"$")
foreach (_src $)
if (_relpath)
else()
endif()
endforeach()
if (_relpath) # propagate srcs to parent directory
set (srcs $ parent_scope)
endif()
endmacro()
project(dtest) #專案名稱
cmake_minimum_required(version 2.8.4) #cmake最低版本
#find_package(opencv required)
#set(cmake_cxx_flags "$ -std=c++11 -o2 ") #使用c++11編譯
#include_directories($ /home/star/library/dlib-19.2/) #專案依賴
#link_directories(/home/star/library/dlib-19.2/build/dlib/libdlib.so)
add_subdirectory(src)
add_executable(dtest $) #生成可執行檔案
#add_library(dtest shared $) #生成動態庫
#add_library(dtest static $) #生成靜態庫
#target_link_libraries(dtest $ /home/star/library/dlib-19.2/build/dlib/libdlib.so)
新增專案檔案的cmakelists.txt檔案:
add_sources(helloworld.h helloworld.cpp)
add_sources(main.cpp)
#add_sources(calltest.cpp)
注意:如果需要引用其他庫,則引用的庫(.a,.so)最好跟需要生成的庫(.a,.so)型別一樣否則可能會報錯。
linux下用cmake編譯安裝mysql
編譯 linux下用cmake編譯安裝mysql 5.6.35 安裝cmake sudo pacman s cmake wget tar zxvf mysql 5.6.35.tar.gz cd mysql 5.6.35 建立資料存放目錄 mkdir p vhs mysql mysql56 建立使用者...
VS下用CMake編譯OpenCV程式
想用cmake編譯opencv的初衷是。不知道由於什麼情況,在自己的筆記本上寫的opencv程式在實驗室台式電腦上編譯不過,反之亦然,在台式電腦上寫的也不能在筆記本上跑。然後每次重新建立工程什麼的也很不開心。所以。據別人說用cmake編譯很方便。所以就。有多方便呢,只要有乙個cmakelists.t...
VS下用CMake編譯OpenCV程式
想用cmake編譯opencv的初衷是。不知道由於什麼情況,在自己的筆記本上寫的opencv程式在實驗室台式電腦上編譯不過,反之亦然,在台式電腦上寫的也不能在筆記本上跑。然後每次重新建立工程什麼的也很不開心。所以。據別人說用cmake編譯很方便。所以就。有多方便呢,只要有乙個cmakelists.t...