1. 程式人生 > >Cmake 錯誤合集

Cmake 錯誤合集

其實,每次碰到要安裝一些軟體啊,通常軟體的原始碼都是c/c++,剛開始LZ不理解,從來都是跟著Readme.txt,一步步安裝,如果說一帆風順的把軟體安裝好了,也就罷了,很可能不會深究到底

cmake .
cmake ..
make all
make -j4
make install
  • 1
  • 2
  • 3
  • 4
  • 5

上述列出來的到底是什麼含義,直接機械式地先安裝依賴庫,經常用的也就是:

sudo apt-get install  #balala...一堆依賴庫的名字
  • 1

安裝完依賴庫,通常就會:

mkdir build
cd build
cmake ..
make
make install
  • 1
  • 2
  • 3
  • 4
  • 5

簡直是教科書般的標準流程,但是很多情況下,在camke這一塊兒就會出錯,LZ也是才接觸這些,之前碰到很多的cmake錯誤東一個部落格西一個部落格一查,雖然問題解決了,但也沒留下啥具體解決方案,或者報的錯誤是哪些,所以,LZ決定還是得新開一篇部落格,把碰到的cmake錯誤彙總到一起。

哈哈,cmake的時候每次應該都最怕看見:

Configuring incomplete errors occurred!/(ㄒoㄒ)/~~**

1.Cannot find source file. SRC_LIST. Tried extensions .c .C .c++ …add_executable called with incorrect number of arguments

這個cmake找不到對應的的檔案,LZ犯這個錯誤的原因是

#wrong one
add_executable(hello SRC_LIST)

#right one
add_executable(hello ${SRC_LIST})
  • 1
  • 2
  • 3
  • 4
  • 5

這是為了輸出一個可執行檔案,第一行的程式碼是在找檔名為SRC_LIST的檔案,但實際上,這是LZ定義的一個變數,在cmake中引用定義的變數是要加${SRC_LIST}這個符號的。

2.make: … empty variable name. stop.

不存在空的變數名稱。停止。。。

這是因為輸入的make後面的變數並沒有定義好,LZ犯錯的原因如下:

#wrong one
make VERBOSE = 1

#right one
make VERBOSE=1
  • 1
  • 2
  • 3
  • 4
  • 5

小夥伴看出來哪裡有不同的嘛?沒錯!等式左右LZ習慣性的打了空格,然後就光榮的報錯了/(ㄒoㄒ)/~~

上面程式碼的意思是可以看到make構建的詳細過程。

3.add_executable cannot create target “hello” because another target with the same name already exists. The existing target is an executable created in source directory

報錯都是一長段,習慣就好,主要看具體報錯的位置和錯誤型別,上面錯誤是LZ把兩個可執行檔案的檔名定義成一樣的了,那是肯定得報錯了,雙胞胎還得有不同呢。。。

4.Parse error in command line argument -DCMAKE_INSTALL_PREFIX. Should be: VAR: type=value CMake Error: No cmake script provided. CMake Error: Problem processing arguments. Aborting

其實,這個錯誤是在定義安裝目錄的時候報錯的,也就是使用-DCMAKE_INSTALL_PREFIX的時候出問題的,LZ把正確的和錯誤的還是都貼出來:

#wrong
cmake -DCMAKE_INSTALL_PREFIX = /tmp/t2/usr

#right
cmake -DCMAKE_INSTALL_PREFIX=/tmp/t2/usr
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

又是老問題,等式左右兩邊加了空格,這真的是寫程式碼的習慣性問題,所以這種編譯錯誤還是對於LZ來說會經常碰到。。。

5.CMake Warning(dev) in CMakeLists.txt: No cmake_minimum_required command is present. A line of code such as cmake_minimum_required(VERSION 2.8) should be added at the top of the file

這其實都不能算是個error,只是一個warning,如果在有些IDE當中,如果你沒有定義cmake的最低版本,它會幫你自動新增這行程式碼的:

cmake_minimum_required(VERSION 2.8)
  • 1

cmake對於命令的大小寫不敏感,但是對於變數的大小寫是敏感的。還有一個問題,就是注意一下自己安裝的cmake的版本,不要設定的最低版本比你安裝的版本還要高,那就直接沒辦法編譯了。

怎麼檢視你的cmake版本?

#在終端中輸入
cmake --version

#終端顯示
cmake version 2.8.12.2
  • 1
  • 2
  • 3
  • 4
  • 5

6.add_library cannot create target “hello” because another target with the same name already exists. The existing target is a shared library create in source directory

這是LZ在編譯動態庫和靜態庫出現的問題,如果直接把靜態庫和動態庫直接使用相同的命名的話,就會報上述的錯誤。

#wrong
add_library(hello SHARED ${LIBHELLO_SRC})
add_library(hello STATIC ${LIBHELLO_SRC})

#right(如果不要求靜態庫和動態庫的名字相同的話)
add_library(hello SHARED ${LIBHELLO_SRC})
add_library(hello_static STATIC ${LIBHELLO_SRC})

#right(如果需要兩個庫名字相同的話)
add_library(hello SHARED ${LIBHELLO_SRC})
add_library(hello STATIC ${LIBHELLO_SRC})
set_target_properties(hello_static PROPERTIES OUTPUT_NAME "hello")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

7.CMAKE Error at lib/cmake_install.cmake:48(FILE): file INSTALL cannot copyfile, “source path” to “target path” Call stack(most recent call first):cmake_install.cmake:37(INCLUDE)

看到這個報錯LZ還是會一臉懵逼的,因為只是報一個無法拷貝檔案的問題,所以還是應該會想到是許可權不夠的問題,雖然有文章建議說安裝軟體的時候儘量不要用sudo但是,有些軟體不用sudo根本沒法安裝,這其實還是蠻矛盾的存在,所以咯:

#報錯的安裝方法
make install

#解決方案
sudo make install 
  • 1
  • 2
  • 3
  • 4
  • 5

如果報permiss denied感覺錯誤應該更好找。。。

8.Cannot specify link libraries for target “curltest” which is not built by the project

其實LZ犯這個錯誤也是很愚蠢的,LZ先寫了target_link_libraries(curltest curl),然後定義的add_executable(curltest main.c),單純的把順序寫反了,所以程式找不到curltest的定義。。。真是一點都不智慧。還是沒有養成寫CMakeLists.txt的良好習慣。

9.Parse error.Function missing ending “)”. End of file reached

報的錯誤是解析錯誤,是因為圓括號不對稱,導致直接程式找到文章結尾了,注意查詢對應括號就行了。

其實還會遇到很多其它錯誤啦,只能遇到一個解決一個咯O(∩_∩)O

相關推薦

Cmake 錯誤

其實,每次碰到要安裝一些軟體啊,通常軟體的原始碼都是c/c++,剛開始LZ不理解,從來都是跟著Readme.txt,一步步安裝,如果說一帆風順的把軟體安裝好了,也就罷了,很可能不會深究到底 cmake . cmake .. make all make -j4 make install12345上述列出來的到

存儲過程常見錯誤

被調用 檢查 限制 沒有 date 數據 ace reat 作用 有如下存儲過程: DROP PROCEDURE IF EXISTS pro_import_under_take_count; CREATE PROCEDURE pro_import_under_take_c

[聯賽前反思] 近期腦殘錯誤

自己的 long 也會 二維數組 限定 畫畫 草稿 long long 操作 1、 技術失誤 ① 大小寫   昨天模擬賽竟然打錯了。。 ② 不開long long   只能在每道題讀題時就先要預估好範圍,在最開始就要保證開好。還不能爆空間。。 ③ 在循環二維數組時

c 錯誤

imp 打開 which cut ica ould LV pic file : Ambiguous operators need parentheses — 不明確的運算需要用括號括起2: Ambiguous symbol xxx — 不明確的符號3: Argument l

大資料入門環境搭建整理、大資料入門系列教程、大資料生態圈技術整理彙總、大資料常見錯誤、大資料的離線和實時資料處理流程分析

本篇文章主要整理了筆者學習大資料時整理的一些文章,文章是從環境搭建到整個大資料生態圈的常用技術整理,環境希望可以幫助到剛學習大資料到童鞋,大家在學習過程中有問題可以隨時評論回覆! 大資料生態圈涉及技術: Hadoop、MapReduce、HDFS、Hive、Hbase、Spark、Scala

Spring Boot2.0系列教程、Spring Cloud系列教程、Spring Boot常見錯誤、Spring Cloud常見錯誤

以下內容結合實際專案和工作經驗整理的Spring Boot和Spring Cloud學習教程和一些常見錯誤,希望能幫助到剛學習到童鞋,學習過程遇到問題評論回覆,第一時間會回覆!   Spring Boot2.0系列教程合集 1、Spring Boot2.0系列教程之idea下新

iOS---錯誤

本文來源地址:www.osjoin.com 1:最近做微信登入在真機上除錯的時候遇見一個問題 ld: '/Users/hzbj/Desktop/工程/20151118/weixinOAuth/weixinOAuth/libWeChatSDK.a(WXApiObject.o

Hibernate常見錯誤

1.錯誤:object references an unsaved transient instance - save the transient instance before flushing: com.xxxx.bean.java.Sysblog; nested ex

OTB跑KCF演算法錯誤

注:matlab版本的 1. Empty format character vector is not supported at the end of a file. Human4. Anno裡的檔案格式不對,換了個ground_truth檔案

CMake error (Configuring incomplete errors occurred!)

其實,每次碰到要安裝一些軟體啊,通常軟體的原始碼都是c/c++,剛開始LZ不理解,從來都是跟著Readme.txt,一步步安裝,如果說一帆風順的把軟體安裝好了,也就罷了,很可能不會深究到底 cmake . cmake .. make all make -j

python錯誤資訊+解決方案

import random outcomes = {'heads':0, 'tails':0} sides = outcomes.keys() print(sides[

Tomcat JDK 部署及錯誤問題

說明:因部落格裡JDK,Tomcat的上下午路徑有些出處,源自兩個系統環境下整理而來,請見諒 1、閃退 a.檢視JDK環境變數是否配置正確,例如: 變數名:Java_Home 變數值:C:\Program Files\Java\jdk1.7.0_51

小程序粉墨登場 --奉上開發教程及書籍

是不是 網易 機器 ive cab 好書推薦 教育 pro ini 微信小程序,簡稱CX,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。 小程序處於內測階段。全面開放申請後,主體類型為個人、企業

網絡流:bzoj1433,1934,1854 題解

struct spa tail set esc urn 這也 space 宿舍 轉載請註明:http://blog.csdn.net/jiangshibiao/article/details/23992205

tomcat配置的一些想法(配置

start rtu 經驗 命令行 clip 編輯 是我 shutdown 小時 5.10日 記,經過兩天艱苦的裝tomcat配置環境和連接eclipse,終於是配置成功。以下是我覺得配置的幾個重點。(48小時換來的經驗!) 1.配置tomcat:如果你jdk是配置好的(在c

Vim命令

特殊 教程 打開 冒號 文件復制 打開文件 高亮 ... end 命令歷史 以:和/開頭的命令都有歷史紀錄,可以首先鍵入:或/然後按上下箭頭來選擇某個歷史命令。 啟動vim 在命令行窗口中輸入以下命令即可 vim 直接啟動vim vim filename 打開vim並創建

git學習資源

git學習 ref bing blank www target detail 學習 git git官網 Pro git 電子書,這裏還有中文版,這也是官方推薦的。 git學習資源合集

重磅福利!!機器學習和深度學習學習資料

best from pytho robert article 我會 you sandbox lob 比較全面的收集了機器學習的介紹文章,從感知機、神經網絡、決策樹、SVM、Adaboost到隨機森林、Deep Learning。 《機器學習經典論文/survey合

前端組件庫大-必備收藏

cal make oom edi ade 情懷 eight engine ebp 前端組件庫 搭建web app常用的樣式/組件等收集列表(移動優先) 0. 前端自動化(Workflow) 前端構建工具 Yeoman &nd

2017年必看的免費linux視頻及python視頻資源

python視頻 linux 軟件版本 網易 linux視頻 2017年必看的linux直播課程與linux在線課程匯總 騰訊課堂:Linux課程:系列直播課程:【免費】零基礎Linux入門系統課程1(持續更新)https://ke.qq.com/course/202854【免費】零基礎l