标签: cmake

如何使用 CMake 在没有优化的情况下进行编译 -O0

我正在使用Scientific Linux (SL)。我正在尝试编译一个使用一堆 C++ (.cpp) 文件的项目。

在目录中user/project/Build,我输入make以编译和链接所有 .cpp 文件。然后我必须去user/run/然后输入./run.sh values.txt

要使用 GDB 进行调试,我必须转到user/run然后键入gdb ../project/Build/bin/Project并运行,我输入run -Project INPUT/inputfile.txt. 但是,我正在尝试使用p variablename.

但是,我收到了消息s1 = <value optimized out>。我在网上做了一些研究,似乎我需要在没有优化的情况下编译-O0来解决这个问题。但是我在哪里输入呢?在CMakeLists?如果是这样,哪些 CMakeLists ?在project/Buildproject/src/project?

debugging gdb cmake optimization

20
推荐指数
3
解决办法
5万
查看次数

cmake 错误:找不到 LibLZMA(缺少:LIBLZMA_INCLUDE_DIR

我正在尝试安装这个名为 acqu-root 的软件。这取决于名为root的主要软件。我设法安装了主软件,但 acqu-root 有问题。我收到以下错误。

[kabi@localhost build]$ cmake ..
-- *** Build Type:      Debug
-- *** Compiler Flags:  -g -O0 -Wall
-- *** Install libs to: /home/kabi/acqu-root/build/lib
-- *** Install bin to:  /home/kabi/acqu-root/build/bin
-- Looking for ROOT...
-- Looking for ROOT... - Found /home/kabi/root/bin/root
-- Looking for ROOT... - Found version is 6.03/01 
-- Configuring acqu_core...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find LibLZMA (missing: LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY
  LIBLZMA_HAS_AUTO_DECODER LIBLZMA_HAS_EASY_ENCODER LIBLZMA_HAS_LZMA_PRESET)
Call Stack (most …
Run Code Online (Sandbox Code Playgroud)

fedora ubuntu cmake

9
推荐指数
2
解决办法
2万
查看次数

为什么找不到 CMAKE_CXX_COMPILER。如何解决?

在尝试在新的 Kubuntu 安装上构建https://gitlab.com/interception/linux/tools时,cmake ..tools/build目录运行会返回错误:

CMake Error at CMakeLists.txt:3 (project):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.
Run Code Online (Sandbox Code Playgroud)

我刚刚安装cmake并假设它会配备它的编译器,但也许它需要配置才能使用?

make cmake

8
推荐指数
1
解决办法
4万
查看次数

如何设置 cmake 策略?

我正在尝试为我的基于 ARM 的笔记本电脑编译 Paraview 图形可视化软件;但是,我收到了一些似乎与 cmake 'policies' 相关的配置警告。警告文本和 cmake 手册页表明我应该能够运行命令cmake_policy()来设置特定策略;但是,我不知道如何或在哪里运行它。

如何设置特定的 cmake 策略?

cmake

6
推荐指数
2
解决办法
5993
查看次数

CMake 错误:当前目录不同于

我正在尝试编译 Shrewsoft VPN 的源代码。说明说要在第 4 步编译源代码。但是...我收到此错误:

\n\n
user@ubuntu:~/Ubuntu One/Programs/ShrewSoft VPN$ sudo cmake \xe2\x80\x93DQTGUI=YES \xe2\x80\x93DETCDIR=/etc \xe2\x80\x93DNATT=YES\nCMake Error: The current CMakeCache.txt directory /home/user/Ubuntu One/Programs/ShrewSoft VPN/CMakeCache.txt is different than the directory /home/user/Programs/ShrewSoft VPN where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt\nCMake Error: The source directory "/home/user/Ubuntu One/Programs/ShrewSoft VPN/\xe2\x80\x93DNATT=YES" does not exist.\nSpecify --help for usage, or press the help button on the CMake GUI.\n
Run Code Online (Sandbox Code Playgroud)\n\n

指示:

\n\n
Compile the …
Run Code Online (Sandbox Code Playgroud)

compiling make cmake

5
推荐指数
0
解决办法
2万
查看次数

如何指定要使用的 libstdc++.so.6

我正在尝试编译我的程序,该程序需要C++11功能和boost比目标机器上安装的更新版本。因此,我使用所有依赖项和 binutils 的树内构建编译并安装gcc 4.9到某个本地目录 ( /secured/local)。然后我下载boost 1.55并运行./boostrap.sh --prefix=/secured/local && ./b4 install安装boost。两种编译都运行良好,gcc -std=c++11也运行良好。

我的程序是使用 cmake 和FindXX.cmake查找文件的常用程序构建的。我正在像这样运行 cmake:

cmake ../source/ -DBOOST_ROOT=/secured/local -DCMAKE_EXE_LINKER_FLAGS='-Wl,-rpath,/secured/local/lib'
Run Code Online (Sandbox Code Playgroud)

它成功地找到了我的新 boost 安装和新版本的 gcc。编译和链接都可以完美地工作。但是,在执行我的程序时,我收到以下错误:

$ ./surface
./surface: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./surface)
./surface: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./surface)
./surface: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./surface)
./surface: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ./surface)
./surface: /usr/lib64/libstdc++.so.6: version …
Run Code Online (Sandbox Code Playgroud)

libraries gcc linker cmake

5
推荐指数
1
解决办法
3万
查看次数

ld 找不到 -lgfortran

我正在尝试使用 CMake 在 Arch Linux 上编译Knut(一个数学程序),但出现以下错误:

/usr/bin/ld: cannot find -lgfortran
/usr/bin/ld: cannot find -lquadmath
collect2: error: ld returned 1 exit status
make[2]: *** [cli/CMakeFiles/knut-cli.dir/build.make:101: cli/knut-cli] Error 1
make[1]: *** [CMakeFiles/Makefile2:498: cli/CMakeFiles/knut-cli.dir/all] Error 2
make: *** [Makefile:128: all] Error 2
Run Code Online (Sandbox Code Playgroud)

我相信gfortranquadmath都已安装,并且链接似乎也正确:

$ ls -al /usr/lib | grep "fortran"
lrwxrwxrwx   1 root root       20 Jun  3 23:11 libgfortran.so -> libgfortran.so.3.0.0
lrwxrwxrwx   1 root root       20 Jun  3 23:11 libgfortran.so.3 -> libgfortran.so.3.0.0
-rwxr-xr-x   1 root root  5858448 …
Run Code Online (Sandbox Code Playgroud)

arch-linux make libraries cmake

5
推荐指数
1
解决办法
3160
查看次数

什么是 Linux 上的 Inno Setup 在 Windows 上的等价物?

希望创建一个 Linux 安装程序,它的工作方式类似于 Windows 上的 Inno Setup(这是在 Windows 上创建安装程序的一个很棒的小工具)。

我的项目非常简单(只有几个文件夹),所以我认为使用autotoolscmake太费力了。

有没有像 Inno Setup 这样简单但适用于 Linux 的东西?

software-rec software-installation cmake autotools

5
推荐指数
1
解决办法
3933
查看次数

使用 cmake 在 GNU GuixSD 中编译程序

我正在尝试在 GuixSD v1.0.0 和 gcc 8.3.0 上编译Xash3D

如下所示,ld(GNU Linker)给我错误,ctr1.o 和 ctri.o 丢失。这些文件存在于 /gnu/store/{specicProgramName} 内多个目录下的其他位置,但是,令人惊讶的是,我无法建立到其他库所在的 ~/.guix_profile 的符号链接,即使具有 root 访问权限也是如此。它们有多个版本,大小不同,因此我假设它们仅与各自的程序兼容。此外。~/.guix_profile 似乎模拟了 Unix 系统的根目录,但是在 GuixSD 中,根目录和 ~/.guix_profile 都缺少 /usr,所以我不知道在哪里链接 c 对象,即使我有实际文件。

在本质上,ld找不到 crt1.o、crti.o 和 libgcc_s.so,并且很可能就像以前一样,在链接或安装这 2 个 c 对象和 libgcc 后,cmake 将停止,并出现有关其他其他错误的进一步错误依赖关系。

无论如何,这是通过以下命令打印/记录的内容(这是安装 Xash3D 的推荐方法)

sudo cmake -DHL_SDK_DIR=../hlsdk -DXASH_SDL=yes -DXASH_VGUI=yes -DCMAKE_C_FLAGS="-m32" -DCMAKE_CXX_FLAGS="-m32" -DCMAKE_EXE_LINKER_FLAGS="-m32" ../ && sudo make
Run Code Online (Sandbox Code Playgroud)
-- The C compiler identification is GNU 9.1.0
-- The CXX compiler identification is GNU 9.1.0
-- Check for working …
Run Code Online (Sandbox Code Playgroud)

dynamic-linking cmake guix ld guixsd

5
推荐指数
1
解决办法
1403
查看次数

未找到 CMake,但已安装

我尝试在运行 Centos 7.2 的集群环境中安装 CMake,方法是执行:

./bootstrap --prefix=/home/user/opt
  make      
  make install
Run Code Online (Sandbox Code Playgroud)

编译没有报错,但是cmake --version显示没有安装。然而, /home/user/opt/bin/cmake -version给了我:

3.5.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
Run Code Online (Sandbox Code Playgroud)

此外,当我尝试通过安装 gflags 时export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1,我再次得到-bash: cmake: command not found

我究竟做错了什么?

centos software-installation cmake

3
推荐指数
1
解决办法
3万
查看次数