解决CMake Error: The source directory "*" does not appear to contain CMakeLists.txt.

Posted 友缘聚友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决CMake Error: The source directory "*" does not appear to contain CMakeLists.txt.相关的知识,希望对你有一定的参考价值。

Hi 大家好,我是钟义林,昨儿个安装mysql,遇到了几个问题,现在打算把问题的解决方法写出来,和大家分享一下,这次我就不截图了,下面大家一起看一下

问题:一、CMake Error: The source directory "/opt/mysql-5.7.3-m13-linux-glibc2.5-x86_64" does not appear to contain CMakeLists.txt. 下面是我从crt里copy出来的

有必要说明一点,我用的系统是centos

Linux localhost.zidonghua1 2.6.32-358.14.1.el6.x86_64 #1 SMP Tue Jul 16 23:51:20 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

===============================================================================

[root@Evil mysql-5.7.3-m13-linux-glibc2.5-x86_64]# cmake .

CMake Error: The source directory "/opt/mysql-5.7.3-m13-linux-glibc2.5-x86_64" does not appear to contain CMakeLists.txt.

Specify --help for usage, or press the help button on the CMake GUI.

[root@Evil mysql-5.7.3-m13-linux-glibc2.5-x86_64]# pwd

/opt/mysql-5.7.3-m13-linux-glibc2.5-x86_64


在解决这个问题前,请允许我吐槽儿一番,我先是在google搜索和搜狗搜索上找了一下(百度基本不靠谱,经过确实,依然是不靠谱),没有一个可解决的方法,可能是我没找到,但确实没有,n多的回答是 你没有在mysql的安装目录里,pwd指令已经很清楚的说明了我就在mysql的目录中,可就是不行。后来我在mysql的官方网站上也没找到解决方法,最终我借助了“强大”的google翻译,把官网上的内容一个个的copy进google翻译里进行翻译,最终我解决了这个问题。吐槽到此结束吧。


首先要多说一下,大家一般去mysql的官方网站的时候,都会下载社区版,因为mysql被oracle收购后,除了社区版都需要付费。所有大家都会下载 mysql community server *.*.** 对吧,这里我就谈如何注册一个账号了,下载前会在 select platform:这里选择要下载的版本。linux - Generic 这个选项所有下载下来的包很大,而且还没法用,这里说明一下,也行是我不会用,不会装。


解决方法如下,还在http://dev.mysql.com/downloads/mysql/*.*heml#downloads 这个网页中(我这这个网页打不开哦*.*是你要下载的版本号) 在select platform 里选择 source code


wKiom1MYNtPAngoeAAEvc7-iqVw085.jpg


然后下载 再安装


总结一下,说那么多废话,终归,最可能你就是所下载的版本可能对,所带来的错误。

在此还强调一下,如果你的版本确认是正确的,但是还是出现问题,建议-yum卸载

yum remove cmake* 把camke卸载 从官网上下载cmake编译安装


#/bin/sh

cd /usr/local/src/

wget http://wwwNaNake.org/files/v2.8/cmake-2.8.12.2.tar.gz

tar zxvf cmake-2.8.12.2.tar.gz

cd cmake-2.8.12.2

./configure

Make

Make install


然后我有遇到另个问题。

make: *** 没有指明目标并且找不到 makefile。 停止。

我不可能没有装make,而且gcc、devel、libs等等我都有装。这个问题又是怎么回事呢?

其实是这样的  cmake成功了就会生成makefile,使用make的时候系统会在当前目录找makefile

如果cmake失败了呢,就不会有,但是你在编译貌似还不行,不得不说一下我的原因是因为

- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)

CMake Error at cmake/readline.cmake:83 (MESSAGE):

 Curses library not found.  Please install appropriate package,


     remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.

Call Stack (most recent call first):

 cmake/readline.cmake:127 (FIND_CURSES)

 cmake/readline.cmake:217 (MYSQL_USE_BUNDLED_LIBEDIT)

 CMakeLists.txt:354 (MYSQL_CHECK_READLINE)



-- Configuring incomplete, errors occurred!

See also


原因就是

package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.

我少了ncurses (你可以用 yum install ncurses ncurses-devel ncurses-libs 来进行安装)

我当时有点拙急,我用的额方法是 yum install *ncurses* 其实一样的,这个不是问题,问题是make 还是报错!


解决方法如下

wKioL1MYPI_Ayw96AAFSsJF4bhk077.jpg

看见 CMakeCache.txt 了吗? 删掉它,然后重新使用 cmake 开始编译mysql

rm -rf CMakeCache.txt


===================================================================================


写完这篇博文呢,我感觉自己有点二,也确实挺二的,能碰到这些问题,不应该为这些小问题纠结的

好了,就当在吐槽一句吧


下面我把 安装mysql的方式 给大家copy出来


/cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DINSTALL_DATADIR=/usr/local/mysql/data/master -DSYSCONFDIR=/usr/local/mysql/etc  \\

-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1  \\

-DENABLED_LOCAL_INFILE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DMYSQL_USER=mysql \\

-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock


make && make install



groupadd mysql

shell> useradd -r -g mysql mysql

useradd -g mysql mysql -s /bin/false

chown -R mysql:mysql /usr/local/mysql

mkdir /usr/local/mysql/etc



shell> cd /usr/local/mysql

shell> chown -R mysql .

shell> chgrp -R mysql .

shell> scripts/mysql_install_db --user=mysql

shell> chown -R root .

shell> chown -R mysql data

shell> bin/mysqld_safe --user=mysql &


cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server




cp support-files/my-default.cnf /usr/local/mysql/etc/my.cnf

cp support-files/mysql.server /etc/init.d/mysqld-sh

vi /usr/local/mysql/etc/my.cnf

 bind-address=

 socket =

 port = 3306

 user = mysql



vi /etc/init.d/mysqld-sh

 basedir=

 datadir

 mysqld_pid_file_path=



chmod +x /etc/init.d/mysqld-sh


/usr/local/mysql/scripts/mysql_install_db \\

--defaults-extra-file=/usr/local/mysql/etc/my.cnf \\

--basedir=/usr/local/mysql \\

--datadir=/usr/local/mysql \\

--user=mysql



/etc/init.d/mysqld-sh start


/usr/local/mysql/bin/mysqladmin -u root password \'你的密码\'


cp /usr/local/mysql/bin/mysql /bin/mysql

以上是关于解决CMake Error: The source directory "*" does not appear to contain CMakeLists.txt.的主要内容,如果未能解决你的问题,请参考以下文章

在 VSCode 的输出视图中断开 CMake/Build 输出的行

CMake Warning This command specifies the relative path as a link directory.

CMake报错:add_subdirectory not given a binary directory but the given source directory

-- Could not find the required component 'pcl_ros'. The following CMake error indicates that

Could not find the required component ‘tf2_geometry_msgs‘. The following CMake error indicates that(

ERROR: error loading sources list: (‘The read operation timed out‘,)