小编bit*_*gor的帖子

使用包含和源路径进行CMake - 基本设置

我正在尝试设置一个看起来像我自己的项目的测试项目,只是为了让事情先行,它看起来像这样:

/MainProject/inc/main.h
/MainProject/src/main.cpp
/LibProject/inc/test.h
/LibProject/src/test.cpp
Run Code Online (Sandbox Code Playgroud)

我找到了一些教程,但是当我有inc和src文件夹时,我无法找到如何设置它?CMakeLists.txt文件看起来如何?我会在每个项目文件夹中有一个/,一个吗?好像我不需要在inc和src文件夹中有一个?

c++ cmake

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

指定cmake如何创建visual studio项目

我正在为我的项目设置cmake,我已经为它设置了一个测试项目.当它生成我的visual studio 2010项目时,我想把它作为我之前的项目.

  • 它创建了一个我不想要的ALL_BUILD和ZERO_CHECK项目.
  • 它将.h文件放入External Dependencies文件夹中.我想要一个包含所有.h文件的Include Files文件夹.
  • 我还想在不同的过滤器下对一些文件进行分组.就像在我的核心库中一样,我想将一个文件夹中与Maths相关的所有文件和另一个与Event管理相关的所有文件组合在一起.
  • 在文件系统上,它将项目文件放在/ Lib/src中.可能是因为我在代码文件夹中组织了它,但我不希望它用于项目文件.
  • 我想设置不同的配置,所以我有DebugOpenGL,DebugDirectX,ReleaseOpenGL,ReleaseDirectX,然后为两种类型的配置设置标志USE_OPENGL或USE_DIRECTX.

当我在windows上构建时,如何在构建Linux时排除某些文件?就像我有WindowWin.cpp和WindowLinux.cpp一样.


我已经尝试了你的吸气但不能让它起作用:

#LibProject/src

FILE(GLOB test0_headers $CMakeTest_SOURCE_DIR/LibProject/inc/test.h)
source_group(include0 FILES ${test0_headers})
FILE(GLOB test0_source ${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(source0 FILES ${test0_source})

FILE(GLOB test1_headers $CMakeTest_SOURCE_DIR/LibProject/inc/test1.h)
source_group(include1 FILES ${test1_headers})
FILE(GLOB test1_source ${CMakeTest_SOURCE_DIR}/LibProject/src/test1.cpp)
source_group(source1 FILES ${test1_source})

include_directories(${test0_headers} ${test1_headers})

add_library(LibProject  ${test0_headers} ${test1_headers} ${test0_source} ${test
1_source})
Run Code Online (Sandbox Code Playgroud)

我现在有点工作..只是我想要源组中的头文件和源文件的子文件夹.

set(test_source0 ${CMakeTest_SOURCE_DIR}/LibProject/inc/test.h ${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(TEST FILES ${test_source0})

set(test_source1 ${CMakeTest_SOURCE_DIR}/LibProject/inc/test2.h ${CMakeTest_SOURCE_DIR}/LibProject/src/test2.cpp)
source_group(TEST2 FILES ${test_source1})

include_directories(${CMakeTest_SOURCE_DIR}/LibProject/inc)
add_library(LibProject  ${test_source0} ${test_source1})
Run Code Online (Sandbox Code Playgroud)

继承人我的解决方案:)

set(test_header
${CMakeTest_SOURCE_DIR}/LibProject/inc/test.h)
set(test_source
${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)

source_group(TEST\\Headers FILES ${test_header})
source_group(TEST\\Source FILES ${test_source})

set(test2_header
${CMakeTest_SOURCE_DIR}/LibProject/inc/test2.h)
set(test2_source
${CMakeTest_SOURCE_DIR}/LibProject/src/test2.cpp)
source_group(TEST2\\Headers FILES …
Run Code Online (Sandbox Code Playgroud)

c++ cmake visual-studio-2010

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

CMake visual studio调试/发布配置

我正在设置我的视觉工作室项目以使用CMake,但我有两个问题我还没有解决.

1如何为Release设置预处理器定义,为Debug设置另一个预处理器定义?

2我有一个带有opengl和directx的项目,所以对于DebugOpenGL和ReleaseOpenGL,我想从buld中排除所有directx cpp/h文件.使用DebugDirectX和ReleaseDirectx排除opengl文件.我该如何设置?

编辑:

到目前为止,我得到的是1.

cmake_minimum_required(VERSION 2.8)

project(TEngine)

if(CMAKE_CONFIGURATION_TYPES AND MSVC)
#DebugOpenGL flags
set(CMAKE_CXX_FLAGS_DEBUGOPENGL "/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1" CACHE STRING "Flags used by the C++ compiler during maintainer builds." FORCE)
set(CMAKE_C_FLAGS_DEBUGOPENGL "/D_DEBUG /MDd /Zi  /Ob0 /Od /RTC1" CACHE STRING "Flags used by the C compiler during maintainer builds." FORCE)
set(CMAKE_EXE_LINKER_FLAGS_DEBUGOPENGL "/debug /INCREMENTAL" CACHE STRING "Flags used for linking binaries during maintainer builds." FORCE )
set(CMAKE_SHARED_LINKER_FLAGS_DEBUGOPENGL "/debug /INCREMENTAL" CACHE STRING "Flags used by the shared libraries linker during …
Run Code Online (Sandbox Code Playgroud)

c++ configuration cmake visual-studio

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

定时向量vs map与unordered_map查找

我对矢量查找与地图查找感到好奇并为它编写了一个小测试程序..它看起来像矢量总是比我使用它的方式更快..我还应该考虑其他什么吗?测试是否有偏见?运行的结果在底部..它以纳秒为单位,但gcc似乎并不支持我的平台.

使用字符串进行查找当然会改变很多事情.

我正在使用的编译行是这样的:g ++ -O3 --std = c ++ 0x -o lookup lookup.cpp

#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>
#include <chrono>
#include <algorithm>

unsigned dummy = 0;

class A
{
public:
    A(unsigned id) : m_id(id){}

    unsigned id(){ return m_id; }
    void func()
    {
        //making sure its not optimized away
        dummy++;
    }
private:
    unsigned m_id;
};

class B
{
public:
    void func()
    {
        //making sure its not optimized away
        dummy++;
    }
};

int main()
{
    std::vector<A> v;
    std::unordered_map<unsigned, B> …
Run Code Online (Sandbox Code Playgroud)

c++ unordered-map vector map

2
推荐指数
1
解决办法
4235
查看次数