cmakelists不區分大小寫#
代表注釋,一句話一行
cmake_minimum_required(version ×××)
project($)
ps::不是強制性的,最好加上,這會引入兩個變數
$_binary_dir, $_source_dir
外部編譯要時刻區分這兩個變數對應的目錄
例如:#設定cpp檔案列表
set(src_dirs *.cpp)
set (lib_dirs *.cpp)
cmakelists.txt:
cmake_minimum_required(version 2.8.0)
project(csr)
add_executable(csr computesquareroot.cpp)
computesquareroot.cpp:
#include
#include
#include
using namespace std;
int main(int argc,char **ar**)
cout<
return 0;
}
0.1版本只是簡單的例子,只有乙個功能,如果我們有很多功能要重複使用,乙個原始檔似乎就不夠用了,我們需要把不同的函式編譯成庫,方便互相之間呼叫。
標頭檔案:hello.h
#ifndef $_hello_h
//如果沒有定義×××
#define $_hello_h
//就定義×××
void
hello
(const
char
* s)
;#endif
準備編譯成庫的檔案hello.cpp
#include
#include
#include
"hello.h"
void
hello
(const
char
* s)
cmakelists.txt
cmake_minimum_required
(version 2.8
)project
(main)
set(lib_list hello.cpp)
set(src_dirs main.cpp)
add_library
(libhello $
)set_target_properties
(libhello properties output_name "hello"
)add_executable
(hello $
)target_link_libraries
(hello libhello)
因為我在生成庫的時候取名為libhello
,但是我們想用hello.h
,又因為可執行程式為hello
,導致衝突,所以加了一句
set_target_properties
(libhello properties output_name "hello"
)
相當於取了別名吧。
main.cpp
#include
"hello.h"
intmain
(int argc,
char
**ar**)
如果原始檔特別多,標頭檔案也特別多,都放在乙個目錄下似乎就太亂了,我們可以把庫檔案和可執行檔案分開放。
src:存放可執行檔案原始檔 lib:存放庫檔案原始檔及標頭檔案
目錄層級:
包含三個cmakelists.txt
頂層:
cmake_minimum_required
(version 2.8
)project
(0.3
)#對子資料夾中cmakelists.txt編譯
add_subdirectory
(src)
add_subdirectory
(lib)
src/cmakelist.txt:
include_directories
($/lib)
set(src_list hello.cpp)
add_executable
(hello $
)target_link_libraries
(hello libhello)
lib/cmakelists.txt:
set
(lib_list libhello.cpp)
add_library
(libhello $
)set_target_properties
(libhello properties output_name hello)
0.4版本一般來說,可執行檔案都放在bin目錄下,庫檔案都放在lib目錄下,所以我們可以設定可執行檔案與庫檔案輸出路徑。
因為我修改了一些目錄的名字,所以cmakelists.txt要對應:
頂層:
cmake_minimum_required
(version 2.8
)project
(0.3
)#對子資料夾中cmakelists.txt編譯
add_subdirectory
(src)
add_subdirectory
(libhello)
src/cmakelist.txt:
include_directories
($/libhello)
set(src_list hello.cpp)
add_executable
(hello $
)set
(executable_output_path $
/bin)
target_link_libraries
(hello libhello)
lib/cmakelists.txt:
set
(lib_list libhello.cpp)
add_library
(libhello $
)set
(library_output_path $
/lib)
set_target_properties
(libhello properties output_name hello)
ps:share jquery學習備忘錄
語法解釋 1.select id change function 為select新增事件,當選擇其中一項時觸發 2.var checktext select id find option selected text 獲取select選擇的text 3.var checkvalue select id...
ATL 學習備忘錄
1.編繹錯誤 error lnk2005 x already defined in atlmincrt.lib atlinit.obj 解決辦法 開啟release版本的專案配置項,把configuration properties general minimize crt use in atl設定...
Lua 學習備忘錄3
一些大型遊戲需要對資料的整理,這樣便於修改和統一管理還有修改。常見的有js和csv csv 其實就是都好分割的簡單文字結構,所以當作一般的文本來處理就好了,js需要解析,有現成的解析庫 function getline filename index 0 myline for line in io.l...